jquery iframe内容更改事件?

ippsafx7  于 2023-01-16  发布在  jQuery
关注(0)|答案(4)|浏览(192)

如何检测iframe内容何时发生更改,并在发生更改时执行以下伪代码

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

dwbf0jvd1#

好吧,浏览器似乎在包含页面的上下文中的<iframe>元素上生成了一个“load”事件,“load”在“src”被更改时触发;不确定是否在iframe更改自身时触发。

**edit:**是的,当页面“内部”重新加载时,它似乎确实会触发

因此,您可以尝试:

$('iframe#yourId').load(function() {
  alert("the iframe has been loaded");
});
r8xiu3jd

r8xiu3jd2#

我正在做一个小技巧(污垢,但它的工作):)显示加载对象

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>
mefy6pfw

mefy6pfw3#

你可以用这个来激发事件的变化..作品在IE8和火狐

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语句

rekjcdws

rekjcdws4#

如果iframe的HTML是动态的,并且您需要跟踪它,那么这对我很有效:

$('#waframe').contents().find('body').on('DOMSubtreeModified', function(){
    //do stuff
});

相关问题