在Javascript /监视对象中循环以进行更新

时间:2014-07-13 20:08:34

标签: javascript

我有一个iframe。我想在Javascript中创建一个监视iframe网址的循环。所以我想要的是这样的:

while(1){
    if(iframe.src == "foo"){
        iframe.src = "bar"
    }
}

正确的方法是什么(理想情况下没有jQuery等)?

1 个答案:

答案 0 :(得分:0)

如果你有一个无限循环,你必须使用break来手动停止它:

while (1) {
    if(...) {
        ...
        break; //exit loop
    }
}

这是你想问的吗?随意提出任何进一步的问题。

修改

我选择的解决方案是创建一个自己的事件来监听,并在需要时触发事件:

var iframeSrcChangeEvt = new Event("iframeSrcChanged"); //create event
document.querySelector("iframe").addEventListener("iframeSrcChanged",function() { //add event listener to the iframe
    this.src = "bar"; //change src as you need it
    this.removeEventListener("iframeSrcChanged"); //remove listener if fired
    clearInterval(monitorIframe); //stop monitoring the iframe
});

var monitorIframe = setInterval(function() { //set an interval to monitor the iframe
    var iframe = document.querySelector("iframe");
    if(iframe.src == "foo") {
        iframe.dispatchEvent(iframeSrcCHangeEvt); //fire event
    }
 },500);

我认为此解决方案更好,因为如果您调整该代码,您可以添加多个iframe进行监控。