2011-11-28 16 views

答えて

17

これを試してください。私はあなたのiFrameのIDが"targetFrame"であり、あなたが呼出したいオブジェクトがtargetObjectであり、それらが同じドメインであると仮定します。彼らは同じドメインでない場合、私はそれは不可能だと思います。:

document.getElementById('targetFrame').contentWindow.targetObject 
+4

子供の 'window'オブジェクトにアクセスするためには、同じドメインにする必要があることに注意してください。 –

4

のiframe srcが親と同じ起源/ドメインにない場合は、理由same-の制限

を持っていると思います https://developer.mozilla.org/en/Same_origin_policy_for_JavaScript

ポリシーは、たとえば、bank.comのiframeでhtmlページを作成する場合など、CSRFトークンやフレームに格納された他のプライベートデータへのアクセスをブロックするように計画されています。 その後、bank.comにログインしたユーザーがサイトに侵入したときその理由のために、プライベートデータはiframeに格納されます。同じorigin-policyは、異なるオリジンがiframeを通じて互いのデータにアクセスするのをブロックします。

2

親のウィンドウオブジェクトを使用して、子iframeのオブジェクトにアクセスすることもできます。

alert(window.frames[0].variable_name); 

変数variable_nameの値は、最初のiFrameから表示されます。フレームリストのインデックスは、フレーム間の変数の値にアクセスするために使用できます。

+0

ES6/ES2015アップデート:これは、' variable_name'が 'var variable_name;'として宣言されていて、 'let variable_name ; '。 [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/let): '' let'は 'var'と違って、グローバルオブジェクトにプロパティを作成しません" – cxw

関連する問題