Циклы в объектах Javascript/мониторинга для обновлений

У меня есть iframe. Я хочу создать цикл в Javascript, который отслеживает URL-адрес iframe. Так что я хочу что-то вроде этого:

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

Каков правильный способ сделать это (в идеале без jQuery и т.д.)?

Ответ 1

Если у вас бесконечный цикл, вы должны остановить его вручную, используя break:

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

Это то, что вы хотели спросить? Не стесняйтесь задавать дальнейшие вопросы.

Edit:

Решение, которое я выбрал, это создание собственного события для прослушивания и функция для запуска события при необходимости:

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 для контроля, если вы адаптируете этот код.