4

メインページにネストされた iframe があります。iframe には次のスクリプトが含まれています。

var adfoxPlaceholderId = 'placeholder';
var adfoxWindow = window;
var adfoxDocument = window.document;
var adfoxPlaceholder = adfoxDocument.getElementById(adfoxPlaceholderId);

try {
    while((adfoxPlaceholder == null) && (adfoxWindow != window.top)) {
        adfoxWindow = adfoxWindow.parent;
        adfoxDocument = adfoxWindow.document;
        adfoxPlaceholder = adfoxDocument.getElementById(adfoxPlaceholderId);
    }
} catch(ex) {
    console.log('catch-block');
}

セキュリティ ポリシーにより、スクリプトはオンラインで中断しますadfoxDocument = adfoxWindow.document;(iframe とメイン ページは異なる URL からのものです)。私の質問は、try-catch ブロックに入れられなかったかのように、このエラーが catch ブロックによってキャッチされないのはなぜですか? ありがとうございました。

4

2 に答える 2

2

javascript例外ではないからこうなった。これはブラウザのセキュリティ機能です。これは、iframe と Web サイトの URL が同じではないために発生しています。

Same Origin Policy のソースは、ここにあります。

javascriptそうは言っても、サードパーティのツールやトリックを使用してこのポリシーを「回避」する方法があります

ここにいくつかのオプションがあります」

イージーXDM

同じオリジン ポリシーを回避する方法

それが役立つことを願っています

于 2012-08-21T12:48:22.950 に答える
0

これは私のテストでは起こりません。IE、FF、Chrome、Safari でのテスト。エラーは、質問に投稿したコードにはありません。

http://jsfiddle.net/hg2cs/1/

于 2012-08-21T13:01:04.150 に答える