0

我有一个带有 iframe 的页面,应该每 5 分钟更新一次。

为此,我使用了以下 javascript 代码

var auto 
auto = self.setInterval(function(){refresh()}, 300000);
function refresh()
{
    var iframe = document.getElementById('report');
    iframe.src = iframe.src;

}

但现在我想确保我总是全屏

我在谷歌中找到以下代码:

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;

    }

浏览器没有返回错误只是没有得到全屏。

任何想法?

4

4 回答 4

1

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

如果切换到全屏失败,Firefox 特别会在错误控制台中记录一条消息。Firefox 和 Chrome 都有可能允许这样做的选择加入开关。

来自 MDN 页面:

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

有关详细信息,请参阅 MDN 上的参考

于 2013-09-03T14:49:34.170 回答
1

奇怪的是,当前的 Chrome 告诉我同样的情况,并且当且仅当 setInterval(与 requestFullscreen 调用无关)在调用前的最后 750 毫秒左右运行时,它才会全屏启动我的视频。

function loop() {
    /* code */
}
setInterval(loop, 1000);

因此,这将导致大约 8 到 10 个案例被拒绝全屏请求。

但:

function loop() {
    /* code */
    setTimeout(loop, 1000);
}
setTimeout(loop, 1000);
于 2017-02-17T10:31:25.183 回答
0

如果没有用户输入(例如单击),就不可能调用全屏。这就是为什么你的函数在按钮上调用但不是超时时起作用的原因。

我相信这是一个浏览器安全问题。有关更多信息,请参见此处https://wiki.mozilla.org/Security/Reviews/Firefox10/CodeEditor/FullScreenAPI

于 2013-09-03T14:49:44.800 回答
0

全屏api是不可能的。

但是您可以在每个刷新调用中设置heightwidth等于iframe客户端窗口。

于 2013-09-03T14:55:03.067 回答