Javascript中的循环/监视对象的更新

Loops in Javascript / monitoring objects for updates

本文关键字:对象 更新 监视 循环 Javascript      更新时间:2023-09-26

我有一个iframe。我想在Javascript中创建一个循环来监视iframe的URL。所以我想要这样写:

while(1){
    if(iframe.src == "foo"){
        iframe.src = "bar"
    }
}
什么是正确的方法来做到这一点(理想情况下没有jQuery等)?

如果你有一个无限循环,你必须手动停止它,使用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来监控,如果你适应的代码