刷新多个iframe

问题描述 投票:0回答:1

我有一个包含几个iframe的页面。 iframe正在从安全摄像头抓取jpeg图像。我希望iframes每7秒刷新一次,然后在40次刷新后超时。我正在使用sessionstorage作为我的计数器。这是我到目前为止所建立的。但是iframe并不令人耳目一新。

<title>Oak Sec Cams (low-rez)</title>
<center><font color ="blue"> Oakland Security Cams (<b>Medium</b> / <a  href="tiny.html">Small</a>)</center>
<script type="text/javascript">

var intervalID = 0;

var iframes = document.getElementsByTagName("iframe");

function windowOnInitialize()
{
intervalID = setInterval(reloadiframes, 7000);
window.sessionStorage.setItem("intervalID", intervalID); 
//alert("we were called");
}

var counter = 0;

function reloadiframes()
{ 
var refreshCounter = window.sessionStorage.getItem("counter");
//alert(refreshCounter);
if (refreshCounter < 40)
{
    refreshCounter++;
    window.sessionStorage.setItem("counter", refreshCounter);
    location.reload();
    //alert(counter);


}
else
{

  clearInterval(intervalID);
window.sessionStorage.clear();

}
}

</script>
javascript iframe refresh session-storage
1个回答
1
投票

因此,你的iframe每7秒没有刷新的原因是你实际上没有在你的代码中的任何地方调用该函数。

function windowOnInitialize() {
  intervalID = setInterval(reloadiframes, 7000);
  window.sessionStorage.setItem("intervalID", intervalID); 
}

在定义windowOnInitialize函数时,需要将此行添加到脚本的底部

windowOnInitialize()

此外,由于使用“location.reload();”,重新加载iframes函数将不起作用。它将重新加载当前文档,在这种情况下,它是iframe的持有者。您需要的是iframe元素的某种迭代,它将单独重新加载每个元素。希望这能让你走上正确的道路:

 function reloadiframes() {
    var refreshCounter = window.sessionStorage.getItem("counter");
    if (refreshCounter < 40) {
        refreshCounter++;
        window.sessionStorage.setItem("counter", refreshCounter);
        for (var i = 0; i < iframes.length; i++) {
           iframes[i].src = iframes[i].src ; 
        }
    }
    else {
        clearInterval(intervalID);
        window.sessionStorage.clear();
    }
}
windowOnInitialize()
© www.soinside.com 2019 - 2024. All rights reserved.