3

我使用的 IFrame 包含不同域上的远程页面(我无法控制),它有时会尝试使用 window.open 弹出一个窗口。

而不是弹出窗口 - 我想使用第一个 IFrame 尝试打开的 URL 将另一个 IFrame 动态添加到页面。

有没有办法覆盖 IFrame 的 window.open 以便我能够“捕获”它试图弹出的 URL?

我试过了:

var myFrame = document.getElementById("ifrm"); // 'ifrm' is the iframe's ID
myFrame.contentWindow.open = function (url, name, features) { 
    alert(url);
};

但它不起作用(没有警报,iframe 仍然试图弹出新窗口)......

有任何想法吗?

4

1 回答 1

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中访问属性“打开”的权限被拒绝

日志: Internet Explorer 中的权限被拒绝

显然Dan F是对的。UA 将拒绝访问通过 iframe 加载的远程(跨域)文档。

于 2012-07-29T02:43:15.020 回答