Javascript 使用jQuery动态检测iframe?
为了检查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”); }); //测试它 $(“按钮”)。单击(
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代码。不,对于同步讨论,我会要求适当的付款,对不起。只有异步注释是免费的。:)