Событие «fullscreenchange» не совместимо с каждым браузером (требуется исправление Vanilla Javascript) - PullRequest
1 голос
/ 28 июня 2019

Я использую событие "fullscreenchange", чтобы применить нужный мне CSS, добавив или удалив идентификатор (#showFullscreen), который будет доминировать над CSS, уже примененным к .fullscreen.

    var fullscreen = document.getElementsByClassName("fullscreen");

    document.addEventListener("fullscreenchange", function() {
        if (document.fullscreenElement || document.webkitFullscreenElement || document.mozFullScreenElement || document.msFullscreenElement) {
            fullscreen[0].setAttribute("id", "showFullscreen");
        } else if (!document.fullscreenElement || !document.webkitFullscreenElement || !document.mozFullScreenElement || !document.msFullscreenElement) {
            fullscreen[0].removeAttribute("id", "showFullscreen");
        }
     });

Как мне заставить этот код работать во всех браузерах с использованием vanilla javascript?

1 Ответ

1 голос
/ 30 июня 2019

Как описано в этой документации bij W3Schools, необходимо добавить префикс имени события в зависимости от браузера.

// Includes an empty string because fullscreenchange without prefix is
// also a valid event we need to listen for
const prefixes = ["", "moz", "webkit", "ms"]
var fullscreen = document.getElementsByClassName("fullscreen");
var fullscreenelement = document.fullscreenElement || /* Standard syntax */
  document.webkitFullscreenElement || /* Chrome, Safari and Opera syntax */
  document.mozFullScreenElement ||/* Firefox syntax */
  document.msFullscreenElement /* IE/Edge syntax */;

prefixes.forEach(function(prefix) {
 document.addEventListener(prefix + "fullscreenchange", function() {
    if (fullscreenElement) {
        fullscreen[0].setAttribute("id", "showFullscreen");
    } else if (!document.fullscreenchange) {
        fullscreen[0].removeAttribute("id", "showFullscreen");
    }
 });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...