首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用setInterval使用javascript进行全屏浏览

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

Stack Overflow用户
提问于 2013-09-03 14:38:43
回答 4查看 921关注 0票数 0

我有一页与iframe,应该每5分钟更新一次。

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

代码语言:javascript
复制
var auto 
auto = self.setInterval(function(){refresh()}, 300000);
function refresh()
{
    var iframe = document.getElementById('report');
    iframe.src = iframe.src;

}

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

我在google中发现了以下代码:

代码语言:javascript
复制
function full() {
                var
                      el = document.documentElement
                    , rfs =
                           el.requestFullScreen
                        || el.webkitRequestFullScreen
                        || el.mozRequestFullScreen
                ;
                rfs.call(el);
            };

如果我按一下按钮就行了

但是,如果我从以下位置调用刷新函数,则无法工作:

代码语言:javascript
复制
    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;

    }

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

有什么想法吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-09-03 14:49:34

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

如果切换到全屏失败,Firefox将专门将一条消息记录到错误控制台。火狐和Chrome都有可供选择的开关,这可能允许这一点。

从MDN页面的以下内容:

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

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

票数 1
EN

Stack Overflow用户

发布于 2017-02-17 10:31:25

奇怪的是,当前的Chrome告诉我同样的情况,并且拒绝以全屏启动我的视频,前提是setInterval (与requestFullscreen调用无关)在通话前的750 me内运行。

代码语言:javascript
复制
function loop() {
    /* code */
}
setInterval(loop, 1000);

因此,在大约8至10起案件中,这将导致全屏请求被拒绝。

但是:

代码语言:javascript
复制
function loop() {
    /* code */
    setTimeout(loop, 1000);
}
setTimeout(loop, 1000);
票数 1
EN

Stack Overflow用户

发布于 2013-09-03 14:49:44

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

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18595066

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档