Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery iframe内容更改事件?_Jquery_Iframe - Fatal编程技术网

Jquery iframe内容更改事件?

Jquery iframe内容更改事件?,jquery,iframe,Jquery,Iframe,如何检测iframe内容何时发生了更改,并根据下面的更改伪代码执行操作 $('#waframe').contents().change(function(){ //do stuff }); 嗯,浏览器似乎在包含页面的上下文中的元素上生成了一个“加载”事件。当“src”更改时,“load”将触发;不确定iframe自身更改时是否触发 编辑:是,当页面“内部”重新加载时,它似乎会触发 因此,您可以尝试: $('iframe#yourId').load(function() { al

如何检测iframe内容何时发生了更改,并根据下面的更改伪代码执行操作

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

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

编辑:是,当页面“内部”重新加载时,它似乎会触发

因此,您可以尝试:

$('iframe#yourId').load(function() {
  alert("the iframe has been loaded");
});
我在做一个小把戏(肮脏但有效):)来显示加载对象

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>
函数changeDet(旧){//检测src更改
if($((“iframe#ifID”).attr('src')!=old){
$(“iframe#ifID”).width(0);//如果隐藏…,则出错。。。?
}
setTimeout('changeDet('+$(“#db”).attr('src'+')”),10);
}
var df=$('iframe'ifID');
load(函数(){//已加载内容
setTimeout('$(“#db”).width(var_default_width);',100);
});
changeDet();
$(函数(){
//jq的东西。。。
})

您可以使用此命令在发生更改时触发事件。。适用于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
语句

这在safari或opera中似乎不起作用我没有检查ie或chrome yetHmm。微软的文档对此主题并不清楚。为了测试它,我只做了一个带有iframe的小页面,我将iframe指向我的一个随机域。在测试页面中,我刚刚在iframe元素上为“load”设置了一个jQuery事件监听器。它在ff中确实可以工作,这很酷,但我需要一些能够在整个电路板上工作的东西,或者至少是我在Chrome 24.0.1312.XX、Opera 12.14、Epiphany(GNOME浏览器)和Mozilla 18.0.2中测试过的大部分东西。它适用于所有这些浏览器。我的操作系统是Linux 12.04 Ubuntu。谢谢@Pointy。这不太可行,因为您必须每10毫秒进行一次字符串比较,当文档大小增加到MB时,这很容易成为负担。避免在
setTimeout
中使用字符串,这是a)安全风险,b)速度慢,c)JS解释器无法正常处理。