web-dev-qa-db-ja.com

親ページから子iFrameDOMにアクセスする

これが取引です:

domain.com/page-親ページ(document.domain = domain.com)にiframeが含まれていますsub.domain.com/page-子iframe(document.domain =未設定)がサブドメインにあります

そのiframeのDOMにアクセスする方法はありますか、それとも運が悪いですか?

同じOriginポリシーにより、親ページに含まれるiframeにdocument.domainを強制することができませんか?それは同一生成元ポリシーの目的を無効にするだろうと思います...その場合、レンダリングされた親ページのiframeのDOMにアクセスするための回避策はありますか?

17
timelf123

やり方がある。 iframeのページが読み込まれたら、次のようにします

parent.childGetElementById = function (id) {return document.getElementById(id);}
parent.childLoaded();

これにより、親ページ(iframeを含む)のグローバルスコープで関数が作成されます。次に、親で、次のようにします

function childLoaded() {var dom = childGetElementById('someid');}

これは、iframeに読み込むページを制御できるためです...そうでない場合は、運が悪いことになります。

28
Zoidberg

これはブラウザのセキュリティ対策です。そうしないと、ログイン時に誰もが銀行のWebサイトをラップして、パスワードをすくい取ることになります。

Iframeから親と話すことはできますが、再びiframeに戻ることはできません。

8
Gats

私の知る限り、あなたは運が悪い。ただし、URLのハッシュバンを使用してそれらの間で話すことができます。まともな議論については this を参照してください。

0
Marcus Frödin