我有一页与iframe,应该每5分钟更新一次。
为此,我使用了以下javascript代码
var auto
auto = self.setInterval(function(){refresh()}, 300000);
function refresh()
{
var iframe = document.getElementById('report');
iframe.src = iframe.src;
}但现在我想确保我总是全屏
我在google中发现了以下代码:
function full() {
var
el = document.documentElement
, rfs =
el.requestFullScreen
|| el.webkitRequestFullScreen
|| el.mozRequestFullScreen
;
rfs.call(el);
};如果我按一下按钮就行了
但是,如果我从以下位置调用刷新函数,则无法工作:
var auto
auto = self.setInterval(function(){clicar()}, 300000);
function full() {
var
el = document.documentElement
, rfs =
el.requestFullScreen
|| el.webkitRequestFullScreen
|| el.mozRequestFullScreen
;
rfs.call(el);
};
function clicar()
{
full();
var iframe = document.getElementById('report');
iframe.src = iframe.src;
}浏览器返回没有错误,只是没有获得全屏。
有什么想法吗?
发布于 2013-09-03 14:49:34
切换到全屏是一个潜在的安全问题,因此通常必须绑定到用户事件(如单击按钮)才能被激活。在这种情况下,您将无法从setInterval事件切换到全屏。切换到全屏可能会失败还有其他原因。
如果切换到全屏失败,Firefox将专门将一条消息记录到错误控制台。火狐和Chrome都有可供选择的开关,这可能允许这一点。
从MDN页面的以下内容:
它不能保证你将能够切换到全屏模式。例如,
<iframe>元素具有mozallowfullscreen属性(webkitallowfullscreen等),以便选择允许它们的内容以全屏模式显示。
有关详细信息,请参阅MDN上的参考文献。
发布于 2017-02-17 10:31:25
奇怪的是,当前的Chrome告诉我同样的情况,并且拒绝以全屏启动我的视频,前提是setInterval (与requestFullscreen调用无关)在通话前的750 me内运行。
function loop() {
/* code */
}
setInterval(loop, 1000);因此,在大约8至10起案件中,这将导致全屏请求被拒绝。
但是:
function loop() {
/* code */
setTimeout(loop, 1000);
}
setTimeout(loop, 1000);发布于 2013-09-03 14:49:44
在没有用户输入的情况下,不可能调用全屏,例如单击。这就是为什么函数在按钮上调用而不是超时时工作的原因。
我相信这是浏览器的安全问题。有关更多信息,请参见这里https://wiki.mozilla.org/Security/Reviews/Firefox10/CodeEditor/FullScreenAPI
https://stackoverflow.com/questions/18595066
复制相似问题