我有一个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;
}
浏览器不会返回任何错误,只是没有全屏显示。
有什么想法吗?
答案 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
设置为等于客户端窗口。