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 でプロパティ「open」にアクセスする権限が拒否されました

ログ: Internet Explorer で許可が拒否されました

どうやらDan Fは正しかったようです。UA は、iframe 経由でロードされたリモート (クロスドメイン) ドキュメントへのアクセスを拒否します。

于 2012-07-29T02:43:15.020 に答える