我正在使用包含不同域(我无法控制)的远程页面的IFrame,它有时会尝试使用window.open弹出一个窗口。
不是弹出窗口 - 我想动态地将另一个IFrame添加到页面,其中包含第一个IFrame尝试打开的网址。
有没有办法覆盖IFrame的window.open所以我能够'抓住'它试图弹出的网址?
我试过了:
var myFrame = document.getElementById("ifrm"); // 'ifrm' is the iframe's ID
myFrame.contentWindow.open = function (url, name, features) {
alert(url);
};
但它不起作用(没有警报,iframe仍试图弹出新窗口)......
有什么想法吗?
答案 0 :(得分:0)
尝试:
function bindings(newDoc){
try
{
newDoc.contentWindow.window.open = function (url, name, features,
replace) {
alert(url);
};
}
catch( e )
{
console.log(e.message);
}
}
在调用iFrame时,请使用onload事件:
<iframe onload="bindings(this)" ... />
它抛出错误:
在Firefox中访问“open”属性的权限被拒绝
Internet Explorer中日志:权限被拒绝
显然 Dan F 是对的.. UA将拒绝访问通过iframe加载的远程(跨域)文档。