使用setInterval使用javascript进行全屏浏览

使用setInterval使用javascript进行全屏浏览,javascript,html,fullscreen,Javascript,Html,Fullscreen,我有一个iframe页面,应该每5分钟更新一次 为此,我使用了以下javascript代码 var auto auto = self.setInterval(function(){refresh()}, 300000); function refresh() { var iframe = document.getElementById('report'); iframe.src = iframe.src; } 但现在我想确保我总是全屏 我在google中找到以下代码: fu

我有一个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;

    }
浏览器不会返回任何错误,只是不会显示全屏


有什么想法吗?

切换到全屏是一个潜在的安全问题,因此通常必须与要执行的用户事件(如单击按钮)相关联。在这种情况下,您将无法从
setInterval
事件切换到全屏。切换到全屏可能失败还有其他原因

如果切换到全屏失败,Firefox会专门将一条消息记录到错误控制台。Firefox和Chrome都有可能实现这一点的选择加入开关

从本页的MDN页:

不能保证您能够切换到全屏模式。例如,
元素具有mozallowfullscreen属性(webkitallowfullscreen等),以便选择允许以全屏模式显示其内容


有关更多详细信息,请参见MDN上的

如果没有用户输入,例如单击,则无法调用全屏。这就是为什么在按钮上调用函数而不是超时时,函数可以工作的原因


我认为这是一个浏览器安全问题。有关更多信息,请参见此处

使用全屏api是不可能的


但是你可以在每次刷新调用中将
iframe
高度和
宽度设置为与客户端窗口相等。

奇怪的是,当前的Chrome告诉我同样的情况,并且仅当设置间隔(与请求的全屏调用无关)时才拒绝全屏启动我的视频在通话前的最后750ms内运行

function loop() {
    /* code */
}
setInterval(loop, 1000);
因此,在大约8到10个案例中,这将导致拒绝全屏请求

但是:


检查当您调用刷新功能时,模拟按钮单击以触发全屏模式-我已将其添加为注释,因为我不知道它是否有效,只是一个建议公式按钮不起作用,因为它不是用户调用的
function loop() {
    /* code */
    setTimeout(loop, 1000);
}
setTimeout(loop, 1000);