Chrome为cancelFullScreen和webkitCancelFullScreen返回undefined

Ben*_*enM 2 javascript google-chrome fullscreen

我编写了一个简单的函数来在Web应用程序上切换全屏模式.该应用程序只需要在浏览器(最终在Kiosk模式部署)中运行,但似乎与一些奇怪的行为cancelFullScreenwebkitCancelFullScreen.

例如,这里是精简toggleFullScreen功能:

var _isFullscreen = false;

function toggleFullScreen()
{
    var doc = document.documentElement,
        state = _inFullscreen,
        requestFunc = (doc.requestFullScreen || doc.webkitRequestFullScreen),
        cancelFunc = (doc.cancelFullScreen || doc.webkitCancelFullScreen);

    _inFullscreen = !(state);

    (!state) ? requestFunc.call(doc) : cancelFunc.call(doc);
}
Run Code Online (Sandbox Code Playgroud)

对于一些奇怪的原因,浏览器始终报告cancelFuncundefined,即使requestFunc工作正常.

任何人都可以解释这个的原因,以及一个可能的解决方案(不需要jQuery或类似的库插件)?

Ben*_*enM 8

在@Tom Chung的帮助下,在玩完之后,事实证明cancelFullScreen(同样webkitCancelFullScreen需要被召唤document,而requestFullscreen需要被召唤document.documentElement.

因此,更新后的代码如下工作正常:

function toggleFullScreen()
{
 var doc = document.documentElement,
 state = (document.webkitIsFullScreen || document.isFullScreen),
 requestFunc = (doc.requestFullscreen || doc.webkitRequestFullScreen),
 cancelFunc = (document.cancelFullScreen || document.webkitCancelFullScreen);

 (!state) ? requestFunc.call(doc) : cancelFunc.call(document);
}
Run Code Online (Sandbox Code Playgroud)