Javascript& HTML - 带按钮的iFrame更新程序

时间:2014-11-30 22:04:02

标签: javascript

我尝试编写一个可以打开和关闭的自我更新的iFrame。我遇到了一些问题。我设法让按钮很容易工作,并使他们能够改变我的exe值,这应该是实际重新加载过程的触发器。

现在,这看起来很容易,但我已经尝试了我的想法,而且我对JavaScript不太熟悉。 - 睡眠功能在别处进行,以便我可以重新加载页面,在重新加载之前睡眠x毫秒(当启动按钮是活动按钮时)。

问题是让帧实际更新,并根据exe值执行。我尝试了一段时间的陈述,但即使是我的卧铺,它只是看到它是一个无限循环并冻结,让我无法用按钮控制它。我尝试用if语句创建一个函数来查看Javascript是否以某种方式继续调用代码,但事实并非如此......所以现在我对如何解决这个问题并使页面实际上有点困惑每次重装。

<!DOCTYPE html>
<html>
<head>
  <title>Updater</title>
</head>

<body>
<script language="javascript"> 
var exe = 1;

function sleep(milliseconds) {
  var start = new Date().getTime();
  for (var i = 0; i < 1e7; i++) {
    if ((new Date().getTime() - start) > milliseconds){
      break;
    }
  }
}

function reload() {
document.getElementById('update_frame').contentWindow.location.reload(true);
sleep();
}


if (exe == 1) {
windows.setInterval(reload(), ms);
}



function start() {
exe = 1;
}

function stop() {
exe = 0;
}


</script>


<IFRAME name="update_frame" src="http://www.google.com" width="300" height="200" scrolling="no" frameborder="0" marginwidth="0" marginheight="0"></IFRAME>
<br />
<button onclick="start()">Start</button>  
<button onclick="stop()">Stop</button>  
</body>

</html> 

解决这个难题的提示将受到关注!提前致谢:D

2 个答案:

答案 0 :(得分:1)

首先改变:

windows.setInterval(reload(), ms);

为:

windows.setInterval(reload, ms);

reload()调用一个函数并返回一个结果,该结果作为参数提供给setInterval。并且你不希望这样,因为你想作为参数提供一个函数,而不是它的结果。

答案 1 :(得分:0)

为了正确停止,您需要在间隔中存储句柄以便稍后清除:

var itvlReload;
function start() {
    itvlReload = setInterval(reload, ms);
}
function stop() {
    clearInterval(itvlRload);
}

这消除了对exe变量的需求。

或者,在重新加载功能中,查询exe

function reload() {
    if (exe) {
        document.getElementById('update_frame').contentWindow.location.reload(true);
    }
}

最后,你实际上并不需要sleep()(它实际上非常糟糕,因为即使在&#34;闲置&#34;)它也会使用周期,因为你&#39;重新使用间隔。