2012-03-06 7 views
1

私のページの1つでは、メインページとは別のサブドメインから読み込まれたiframeがあります。iframeからの親ウィンドウのメソッドの呼び出しがOperaで失敗する

window.parent.page.doit() 

これは、ほとんどのブラウザではうまく機能(IE:両方の文書で は私が、私は親ページ上のiframeからメソッドを呼び出すために試行し、同じように何かを document.domainをを設定しました、Firefoxの、クロム、サファリは)が、次のエラーメッセージでオペラに失敗します、それはオペラのように思える私はこの上で見つけることができたから

Uncaught exception: ReferenceError: Security error: attempted to read protected variable: page

は、ブラウザの残りの部分よりもより厳しいセキュリティを持っています。誰かがこの問題に出会ったのですか?それを解決する方法や回避策はありますか?

ありがとうございました。

答えて

0

あなたは両方のページ上の第二レベルドメインにdocument.domainを設定する必要があり、すなわち

maindomain.com

document.domain = "maindomain.com"; 

subdomain.maindomain.com

document.domain = "maindomain.com"; 
+0

私はそれを書いています*私はdocument.domainを同じ*に設定しました。そうでなければ、他のブラウザ同じように。 –

+0

ここでtestpageを作成します:http://testplayground.com/xdm/、opera 11.61(mac os)で正常に動作します。あなたのオペラでうまくいきますか? – Goshka

+0

ええ、私のオペラでうまくいけば、私はなぜ私が説明した問題があったのか分からない、別の問題を修正するためにいくつかのコードを変更し、エラーが消えた。私は明らかに両方のドキュメントのドメインを変更したので、それが何を引き起こしたのか分かりません。助けてくれてありがとう。 –

0

私はOperaのいくつかのバージョンを見たことがあります。そのようなものは、キャッシュをクリアして再起動した後に消えるだけのセキュリティエラーを引き起こします。それはデバッグのために吸うが、少なくともあなたの訪問者は一般的にこの問題を抱えません。

+0

問題はどうにかして消えましたが、どうしたらいいか分かりませんが、キャッシュをクリアすると(履歴、クッキーなど)、この問題には何の影響もなく、再起動(ブラウザとマシンの両方)さえできません。 –

+0

うわー。私が考えることができる唯一の他の事は、タイミング問題です。 document.domain = ...行はできるだけ早くページ内にあり、onloadや他のイベントハンドラ内には存在しないようにしてください。 – hallvors

+0

いいえ、私はそれが事実でないことを確認しました。私は_alert_を使用しましたブロック)ので、いつ何が起こるかを知ることができます。 _document.domain_割り当ては、フレーム間の通信が行われる前に発生しました。 –

関連する問題