サーバー上のプロキシを介してiframeにWebサイトのコンテンツをロードしています。このjavascriptをファイルの先頭に追加すると、
var top = "";
var parent = "";
ウェブサイトがフレームバストするのを防ぐことができます。これを実行し、次のように親ウィンドウの関数にアクセスするにはどうすればよいですか。
parent.my_function('this is called from inside the iframe');
サーバー上のプロキシを介してiframeにWebサイトのコンテンツをロードしています。このjavascriptをファイルの先頭に追加すると、
var top = "";
var parent = "";
ウェブサイトがフレームバストするのを防ぐことができます。これを実行し、次のように親ウィンドウの関数にアクセスするにはどうすればよいですか。
parent.my_function('this is called from inside the iframe');
これらの変数を上書きすることでフレームの無効化が必ずしも防止されるかどうかはまったくわかりませんが、それが機能している場合は、おそらくアクセス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
ます)。
top
最も簡単なのは、とのparent
値を自分だけが知っている変数に格納することだと思います。
例えば:
window.__myTopWindow = window.top;
window.__myParentWindow = window.parent;
window.top = window.parent = null;
もちろん、window オブジェクトを繰り返し処理して、window オブジェクトであるプロパティを見つけることができます。この場合、スコープを再割り当てするか、Crowder のソリューションを使用することをお勧めします。