fullscreenchange 事件在 Chrome 中未触发

问题描述 投票:0回答:3

我正在尝试监视浏览器何时进入全屏模式。

我在任何地方搜索时都会引用此博客作为全屏 API 的指南。

http://robertnyman.com/2012/03/08/using-the-fullscreen-api-in-web-browsers/

这个SO答案也声称这有效。

全屏 API:会触发哪些事件?

这是我使用 jQuery 的代码,但它没有触发事件。

$(document).on("webkitfullscreenchange mozfullscreenchange fullscreenchange",function(){
        console.log("bang!");
});

看起来很简单,但它在 Chrome 中不会触发。知道我做错了什么吗?

更新:

发现了一些新东西。仅当 JavaScript 调用

requestFullScreen
API 时,这些事件才起作用,但如果用户按 F11,则事件不起作用。

javascript jquery google-chrome fullscreen
3个回答
25
投票

fullscreenchange
事件确实有效,但前提是全屏模式由
requestFullscreen
触发。

如果用户通过热键手动启用全屏模式,似乎存在安全限制,阻止 JavaScript 进行监控。

或者,您可以监视调整大小事件以查看窗口是否与桌面大小匹配,但这对我来说似乎是一种黑客行为(即这可以在双显示器上工作吗?)

我决定放弃全屏模式的监控,只使用API来切换状态。


1
投票

作为替代方案,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); };
相关:

JavaScript 窗口调整大小事件...


0
投票
Chrome 120 显然也不会触发像

webkitRequestFullScreen()

 这样的前缀版本和大写的 S 版本:
requestFullScreen()
 的事件,但会触发标准化拼写和大写的事件:
requestFullscreen()
。我提交了 
http://crbug.com/1511367

© www.soinside.com 2019 - 2024. All rights reserved.