Циклы в Javascript / мониторинг объектов для обновления
У меня есть iframe. Я хочу создать цикл в Javascript, который отслеживает URL-адрес iframe. Так что я хочу что-то вроде этого:
while(1){
if(iframe.src == "foo"){
iframe.src = "bar"
}
}
Как правильно это сделать (в идеале без jQuery и т. Д.)?
1 ответ
Если у вас есть бесконечный цикл, вы должны остановить его вручную, используя 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 для мониторинга, если вы адаптируете этот код.