Событие смены содержимого iframe? - PullRequest
25 голосов
/ 12 марта 2010

Как я могу определить, когда содержимое iframe изменилось, и сделать что-то после этого псевдокода изменения ниже

 $('#waframe').contents().change(function(){
   //do stuff
  });

Ответы [ 3 ]

26 голосов
/ 12 марта 2010

Ну, похоже, браузер генерирует событие "load" для элемента <iframe> в контексте содержащей страницы. «Load» срабатывает при изменении «src»; не уверен, срабатывает ли он, когда iframe меняет сам себя.

edit: да, похоже, он срабатывает, когда страница перезагружается "внутренне"

Таким образом, вы можете попробовать:

$('iframe#yourId').load(function() {
  alert("the iframe has been loaded");
});
4 голосов
/ 28 июня 2012

Я делаю небольшой трюк (грязь, но это работает) :), чтобы отобразить объект загрузки

function changeDet(old){ //detect src changes
    if($("iframe#ifID").attr('src') != old){
        $("iframe#ifID").width(0); //error if i hide ...?
    }

    setTimeout('changeDet("' + $("#db").attr('src') + '")',10);
}

var df = $('#iframe#ifID');

df.load(function(){ //content loaded
setTimeout('$("#db").width(var_default_width);',100);
});

changeDet();

$(function(){   
    //jq stuffs...
})
</script>
1 голос
/ 12 декабря 2012

Вы можете использовать это для запуска события при изменении. Работает на IE8 и firefox

if(document.addEventListener){
    yourIFrameObject.contentWindow.document.addEventListener('keyup', yourFunction, false);
   // window.frames[0].document.addEventListener('keyup', yourFunction, false);
}
else{
//for IE8
    yourIFrameObject.contentWindow.document.attachEvent('onkeyup', yourFunction);
}

При необходимости вы можете использовать оператор mouseup

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...