1

サーバー上のプロキシを介してiframeにWebサイトのコンテンツをロードしています。このjavascriptをファイルの先頭に追加すると、

var top = "";
var parent = "";

ウェブサイトがフレームバストするのを防ぐことができます。これを実行し、次のように親ウィンドウの関数にアクセスするにはどうすればよいですか。

parent.my_function('this is called from inside the iframe');
4

2 に答える 2

1

これらの変数を上書きすることでフレームの無効化が必ずしも防止されるかどうかはまったくわかりませんが、それが機能している場合は、おそらくアクセスparentするために次のようなことができます。

(function() {
    var oldParent = window.parent;

    window.parent = "";
    // ...
})();

...そしてoldParent関数内のアクセス。


これとは別に、注意してください

var window.top = "";

var window.parent = "";

...両方とも構文エラーです。名前付きオブジェクトのプロパティではなく、変数varを宣言するために使用します。

グローバルスコープにいる場合、プロパティがまだ存在しない場合var topはプロパティを作成しますwindowが、すでに存在する場合(および存在する場合)、それはノーオペレーションであり、そのvar部分は完全に無視されます(割り当て部分は引き続き処理されます) )。構文エラーがない場合、4行は次のように要約されます。

top = "";
parent = "";

また

window.top = "";
window.parent = "";

...これは、に存在する場合topと同等です(そしてparent存在しwindowます)。

于 2012-05-28T21:49:29.877 に答える
1

top最も簡単なのは、とのparent値を自分だけが知っている変数に格納することだと思います。

例えば:

window.__myTopWindow = window.top;
window.__myParentWindow = window.parent;
window.top = window.parent = null;

もちろん、window オブジェクトを繰り返し処理して、window オブジェクトであるプロパティを見つけることができます。この場合、スコープを再割り当てするか、Crowder のソリューションを使用することをお勧めします。

于 2012-05-28T21:55:48.497 に答える