Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/451.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
Javascript 使用jQuery动态检测iframe?_Javascript_Jquery_Iframe - Fatal编程技术网

Javascript 使用jQuery动态检测iframe?

Javascript 使用jQuery动态检测iframe?,javascript,jquery,iframe,Javascript,Jquery,Iframe,为了检查iFrame当前是否打开,您可以使用: if (window!=window.top) { /* I'm in a frame! */ } 但如果我想在iFrame打开时获得警报,该怎么办?如何允许JS自动检测当前页面上已打开或插入DOM中的iFrame?使用JQuery,您可以使用以下代码: $('body')。在('DOMNodeInserted','iframe',函数(e)上{ console.log(“插入文档的Iframe”); }); //测试它 $(“按钮”)。单击(

为了检查iFrame当前是否打开,您可以使用:

if (window!=window.top) { /* I'm in a frame! */ }

但如果我想在iFrame打开时获得警报,该怎么办?如何允许JS自动检测当前页面上已打开或插入DOM中的iFrame?

使用JQuery,您可以使用以下代码:

$('body')。在('DOMNodeInserted','iframe',函数(e)上{
console.log(“插入文档的Iframe”);
});
//测试它
$(“按钮”)。单击(函数(){
$('body')。附加(“”)
});

添加iframe


与Nick相同的解决方案,没有jQuery,使用(现已弃用的)

document.body.addEventListener('domandeinserted',函数(e){
如果(e.target.tagName=='IFRAME'){
console.log(“插入文档的Iframe”,e);
}
});
document.querySelector('button')。addEventListener('click',function(){
document.body.appendChild(document.createElement('iframe'))
});
添加Iframe
此事件已弃用。您应该改用:

新的突变观察者(功能(突变){
var observer=此;
突变。forEach(功能(突变){
[]forEach.call(mutation.addedNodes,function(node){
if(node.nodeName==='IFRAME'){
警报('插入了iframe!');
//如果您只对第一个插入的iframe感兴趣:
observer.disconnect();
}
});
});    
}).遵守(文件正文){
儿童名单:是的,
子树:false//true以“观察”整个页面
});

addiframe
除了有限的浏览器支持之外,
DOMNodeInserted
是。应该被用来代替。现在不用JSFIDLE就可以运行代码片段,这非常有趣。因为某种原因,这和Nicks的答案相比不起作用。可能你正在使用IE10或者更糟糕的东西。请查看我答案的更新。我正在使用最新版本的Chrome,但我将尝试您的try/catch语句。此页面中的代码片段是否适用于您?我不确定您的意图是什么,因为我的代码片段不需要任何jQuery代码。不,对于同步讨论,我会要求适当的付款,对不起。只有异步注释是免费的。:)