私はかなり興味深い問題を抱えています。ダイアログ内にiframeが含まれているモーダルjqueryダイアログを作成する親ページがあります。 iframeには、サードパーティドメインのコンテンツが入力されます。私の問題は、iframeのコンテンツが正常に読み込まれたかどうか、および5秒以内に読み込まれなかったかどうかを検出できるダイアログレベルのJavaScriptを作成してから、ダイアログを閉じてユーザーを親ページに戻す必要があることです。
私は数多くの解決策を研究してきましたが、真に価値のあるものは2つだけです。
正直なところ、これらは私が使用しなければならない唯一のオプションですか?これを検出する簡単な方法はありませんか?
Http応答エラーをポーリングする方法があるかどうかを調査してきましたが、これは依然として同じ制限に限定されています。
どんな助けでも大歓迎です。
ありがとう
最も簡単な方法(外部サイトにコードを追加できる場合)は、ドメイン上の特別なhtmlファイルを指す非表示のiframeを追加することです。次に、parent.parent.foo()
を使用して、ロードイベントについて元のウィンドウに通知できます。
「load」イベントをリッスンすると、ウィンドウがロードされたかどうかだけがわかり、何がロードされたか、またはドキュメントが対話の準備ができているかどうかはわかりません。
Nicholas Zakasに、iframeが読み込まれたかどうかの検出に関する記事があります: http://www.nczonline.net/blog/2009/09/15/iframes-onload-and-documentdomain/ 。基本的に、次のコードスニペットがあります。
_var iframe = document.createElement("iframe");
iframe.src = "simpleinner.htm";
if (iframe.attachEvent){
iframe.attachEvent("onload", function(){
alert("Local iframe is now loaded.");
});
} else {
iframe.onload = function(){
alert("Local iframe is now loaded.");
};
}
document.body.appendChild(iframe);
_
私はそれをテストしていませんが、jQueryは$("#iframe").load(function () { alert("Local iframe is now loaded."); });
のようなことをすることでそれを処理できるはずだと確信しています。
フレーム間の通信に postMessage を使用してみてください。
これには、リモートサイトに、読み込みが完了したときに親ドキュメントにメッセージを投稿するための特定のJavaScriptを含める必要があります。
これは、iframe自体のonloadハンドラーを使用して行うことができます。残念ながら(驚きです!)IEは困難です。これを機能させる唯一の方法は、iframe用のHTMLを作成し、それをinnerHTML
でドキュメントに追加することでした。次に、iframeがDOMに表示されるタイミングを確認するためにポーリングする必要があります。これは、ページが読み込まれているかどうかによって異なります。ソースへのリンクは次のとおりです。 http://svn.openlaszlo.org/openlaszlo/trunk/ lps/contains/source/iframemanager.js
create()
、__finishCreate()
およびgotload()
を参照してください。これをコピーして、自分で使用してください。
よろしく、Max Carlson OpenLaszlo.org