【问题标题】:IE11 doesn't listen to MSFullscreenChange eventIE11 不监听 MSFullscreenChange 事件
【发布时间】:2020-10-28 17:49:14
【问题描述】:

我正在尝试使用 Bigscreen.js 在 IE11 中使用全屏。 但是 IE11 不监听 "MSFullscreenChange" 事件。

document.addEventListener("MSFullscreenChange", function () {
     if (document.msFullscreenElement != null) {
         console.info("Went full screen");
     } else {
         console.info("Exited full screen");              
     }
});

将它放在控制台中,它不会在全屏上打印任何内容。 检测此事件的替代方法是什么?

【问题讨论】:

标签: javascript internet-explorer-11


【解决方案1】:

实际上,微软的文档是错误的。

我正在针对 IE11 进行测试,但它没有 MSFullscreenChange 事件侦听器。相反,它具有onmsfullscreenchange 事件处理程序。

所以,只要改变这个,你的代码就可以工作了。

【讨论】:

  • 奇怪,对我来说 MSFullscreenChange 在 IE11(版本 11.165.17134.0,更新 11.0.75)中工作,而 msfullscreenchange 不起作用。
  • 我也一样,MSFullscreenChange 在 IE11 中工作,所以我不得不对你的回答投反对票,抱歉
【解决方案2】:

我在my word game 中遇到了类似的问题,在 Internet Explorer 11 中没有调用 MSFullscreenChange 侦听器:

为了解决这个问题,我必须将监听器附加到 document 而不是 DOM 元素(在我的例子中是 #fullDiv)。即使附加到 DOM 元素的所有其他侦听器全屏显示:

var domElem = document.getElementById('fullDiv');

domElem.addEventListener('fullscreenchange', updateFullCheck);
domElem.addEventListener('webkitfullscreenchange', updateFullCheck);
domElem.addEventListener('mozfullscreenchange', updateFullCheck);
document.addEventListener('MSFullscreenChange', updateFullCheck); // IE 11

以下是我在 IE11、Edge、Safari/MacOS、Chrome、Firefox、Opera 中工作的完整代码:

'use strict';

function isFullscreenEnabled() {
    return  document.fullscreenEnabled || 
            document.webkitFullscreenEnabled || 
            document.mozFullScreenEnabled || 
            document.msFullscreenEnabled;
}

function getFullscreenElement() {
    return  document.fullscreenElement || 
            document.webkitFullscreenElement || 
            document.mozFullScreenElement || 
            document.msFullscreenElement;
}

jQuery(document).ready(function($) {
    if (isFullscreenEnabled()) {
        function updateFullCheck() {
            if (getFullscreenElement()) {
                $('#fullCheck').prop('checked', true).checkboxradio('refresh');
                $('#leftDiv').css('padding', '24px 0 24px 24px');
                $('#rightDiv').css('padding', '24px 24px 24px 0');
            } else {
                $('#fullCheck').prop('checked', false).checkboxradio('refresh');
                $('#leftDiv').css('padding', '0');
                $('#rightDiv').css('padding', '0');
            }
        }

        var domElem = document.getElementById('fullDiv');

        domElem.addEventListener('fullscreenchange', updateFullCheck);
        domElem.addEventListener('webkitfullscreenchange', updateFullCheck);
        domElem.addEventListener('mozfullscreenchange', updateFullCheck);
        document.addEventListener('MSFullscreenChange', updateFullCheck); // IE 11

        $('#fullCheck').checkboxradio().click(function(ev) {
            ev.preventDefault();
            ev.stopPropagation();
            
            if (getFullscreenElement()) {
                if (document.exitFullscreen) {
                    document.exitFullscreen();
                } else if (document.mozCancelFullScreen) {
                    document.mozCancelFullScreen();
                } else if (document.webkitCancelFullScreen) {
                    document.webkitCancelFullScreen();
                } else if (document.msExitFullscreen) {
                    document.msExitFullscreen();
                    }
                } else {
                    if (domElem.requestFullscreen) {
                        domElem.requestFullscreen();
                    } else if (domElem.mozRequestFullScreen) {
                        domElem.mozRequestFullScreen();
                    } else if (domElem.webkitRequestFullscreen) {
                        domElem.webkitRequestFullscreen();
                    } else if (domElem.msRequestFullscreen) {
                        domElem.msRequestFullscreen();
                    }
                }
            }).checkboxradio('enable');
    }
});

【讨论】:

    【解决方案3】:

    如果我导航到http://brad.is/coding/BigScreen/,启动 F12 开发人员工具,将您的脚本粘贴到控制台,然后单击“运行脚本”按钮,单击演示图像会按预期在控制台中显示“全屏显示”消息。

    在控制台中粘贴多行脚本时,您必须单击“运行脚本”按钮或按 Ctrl + Enter 才能实际提交脚本以执行。只需按 Enter 键即可在脚本中插入换行符。或者,您可以将脚本更改为单行。在这种情况下,按 Enter 键将提交脚本以供执行。

    披露:我所在的团队负责 Microsoft 实施全屏 API。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-14
      • 2022-01-03
      • 2012-12-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-23
      相关资源
      最近更新 更多