我正在尝试监视浏览器何时进入全屏模式。
我在任何地方搜索时都会引用此博客作为全屏 API 的指南。
http://robertnyman.com/2012/03/08/using-the-fullscreen-api-in-web-browsers/
这个SO答案也声称这有效。
这是我使用 jQuery 的代码,但它没有触发事件。
$(document).on("webkitfullscreenchange mozfullscreenchange fullscreenchange",function(){
console.log("bang!");
});
看起来很简单,但它在 Chrome 中不会触发。知道我做错了什么吗?
更新:
发现了一些新东西。仅当 JavaScript 调用
requestFullScreen
API 时,这些事件才起作用,但如果用户按 F11,则事件不起作用。
fullscreenchange
事件确实有效,但前提是全屏模式由 requestFullscreen
触发。
如果用户通过热键手动启用全屏模式,似乎存在安全限制,阻止 JavaScript 进行监控。
或者,您可以监视调整大小事件以查看窗口是否与桌面大小匹配,但这对我来说似乎是一种黑客行为(即这可以在双显示器上工作吗?)
我决定放弃全屏模式的监控,只使用API来切换状态。
作为替代方案,onresize事件或ResizeObserver也应该可以工作。
let field = document.getElementById('textarea');
field.addEventListener('resize', (event) =>
{
console.log(1, event);
});
let resizeObserver = new ResizeObserver(entries =>
{
for (let entry of entries)
{
console.log(2, entry);
}
});
resizeObserver.observe(field);
通常不推荐使用以下方法 - 覆盖全局事件,因此addEventListener。
window.onresize = function(event)
{
console.log(1, event);
};
相关: