Событие "fullscreenchange" не совместимо с каждым браузером (требуется исправление Vanilla Javascript)
Я использую событие "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 ответ
Решение
Как описано в этой документации 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");
}
});
});