我正在尝试使用Bigscreen.js在IE11中使用全屏。但是IE11不会监听"MSFullscreenChange“事件。
document.addEventListener("MSFullscreenChange", function () {
if (document.msFullscreenElement != null) {
console.info("Went full screen");
} else {
console.info("Exited full screen");
}
});把这个放到控制台中,它不会在全屏上打印任何东西。检测此事件的替代方法是什么?
发布于 2017-11-09 02:03:56
实际上,Microsoft文档是错误的。
我正在对IE11进行测试,它没有MSFullscreenChange事件侦听器。相反,它具有onmsfullscreenchange事件处理程序。
所以,只要改变这一点,你的代码就应该可以工作了。
发布于 2020-10-28 17:49:14
我在my word game中遇到了类似的问题,在Internet Explorer11中没有调用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');
}
});发布于 2014-02-04 09:17:07
如果我导航到http://brad.is/coding/BigScreen/,启动F12开发人员工具,将脚本粘贴到控制台中,然后单击“运行脚本”按钮,单击演示图像就会在控制台中按预期显示“to screen”消息。
在控制台中粘贴多行脚本时,您必须单击“Run script”按钮或按Ctrl + Enter才能实际提交脚本以供执行。只需按Enter键即可在脚本中插入一个换行符。或者,您可以将脚本更改为单行。在这种情况下,按Enter键将提交脚本以供执行。
披露:我是微软Fullscreen API实现团队中的一员。
https://stackoverflow.com/questions/21475597
复制相似问题