親が新しいウィンドウを開き、子ウィンドウがいつロードされたかを検出しようとしています。Chromeで、試しました
open('http://www.google.com').onload = function() { alert(location.href); };
しかし、それはうまくいかないようです。
上記の方法が機能しないのはなぜですか?代替手段はありますか?
親が新しいウィンドウを開き、子ウィンドウがいつロードされたかを検出しようとしています。Chromeで、試しました
open('http://www.google.com').onload = function() { alert(location.href); };
しかし、それはうまくいかないようです。
上記の方法が機能しないのはなぜですか?代替手段はありますか?
そのままの方法は機能するはずです(そして私にとっては機能します)が、別のドメインからのドキュメントを含むウィンドウを開くときはそうではありません。
セキュリティ上の理由から、新しいウィンドウは load-event を別のドメインからのドキュメントにディスパッチしません。
ページが読み込まれたことを確実に確認したい場合は、メッセージングを使用できます。
HTML5 を使用できる場合は、web-messagingという新しい機能があります。これは、クロスドメイン ソースで非常にうまく機能します。
HTML5 を使用できない場合は、代わりに JS を使用してください。windowmsgという単純な jQuery プラグインを使用しました。それは私にとって非常にうまく機能しました。これがクロスサイト環境で機能するかどうかはよくわかりませんが、そうすべきだと思います。
この種のソリューションが提供するセキュリティの問題に注意してください。
技術的に言えば、子ウィンドウと親ウィンドウはブラウザーの 2 つの異なるインスタンスです。それらを子ウィンドウおよび親ウィンドウと呼びます。それらは互いにアクセスできません。そのため、2 番目のウィンドウで HTML 要素をクリックしても、1 つのウィンドウでアクションを実行することはできません。
したがって、アクセスが必要な場合は、新しいウィンドウを開かないことをお勧めします。効果的に同じウィンドウの一部であり、制御できるファンシーボックスまたはライトボックスを使用できます。