如何检测iframe内容何时发生更改,并在发生更改时执行以下伪代码
$('#waframe').contents().change(function(){ //do stuff });
dwbf0jvd1#
好吧,浏览器似乎在包含页面的上下文中的<iframe>元素上生成了一个“load”事件,“load”在“src”被更改时触发;不确定是否在iframe更改自身时触发。
<iframe>
**edit:**是的,当页面“内部”重新加载时,它似乎确实会触发
因此,您可以尝试:
$('iframe#yourId').load(function() { alert("the iframe has been loaded"); });
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>
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语句
mouseup
rekjcdws4#
如果iframe的HTML是动态的,并且您需要跟踪它,那么这对我很有效:
$('#waframe').contents().find('body').on('DOMSubtreeModified', function(){ //do stuff });
4条答案
按热度按时间dwbf0jvd1#
好吧,浏览器似乎在包含页面的上下文中的
<iframe>
元素上生成了一个“load”事件,“load”在“src”被更改时触发;不确定是否在iframe更改自身时触发。**edit:**是的,当页面“内部”重新加载时,它似乎确实会触发
因此,您可以尝试:
r8xiu3jd2#
我正在做一个小技巧(污垢,但它的工作):)显示加载对象
mefy6pfw3#
你可以用这个来激发事件的变化..作品在IE8和火狐
如有必要,可以使用
mouseup
语句rekjcdws4#
如果iframe的HTML是动态的,并且您需要跟踪它,那么这对我很有效: