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

时间:2013-09-03 14:38:44

标签: 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中找到以下代码:

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 个答案:

答案 0 :(得分:1)

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

如果切换到全屏失败,Firefox将专门将消息记录到错误控制台。 Firefox和Chrome都有可选的交换机开关。

在MDN页面上:

  

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

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

答案 1 :(得分:1)

奇怪的是当前的Chrome告诉我同样的情况并拒绝以全屏方式启动我的视频,当且仅当在调用之前的最后750毫秒内运行setInterval(与requestFullscreen调用没什么关系)时才会运行。

public void dateChange(SelectEvent event) {
    System.out.println("File Date: " + (Date) event.getObject());
    System.out.println("Hello... I am in DateChange");
}

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

可是:

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

答案 2 :(得分:0)

如果没有用户输入,则无法调用全屏,例如点击。这就是为什么你的功能在按钮上调用但不是超时时的原因。

我认为这是一个浏览器安全问题。有关详细信息,请参阅此处https://wiki.mozilla.org/Security/Reviews/Firefox10/CodeEditor/FullScreenAPI

答案 3 :(得分:0)

使用全屏api是不可能的。

但您可以在每次刷新调用中将height的{​​{1}}和width设置为等于客户端窗口。