IFRAMEのonloadイベントは、HTMLが完全にダウンロードされたとき、またはすべての従属要素がロードされたときだけ起動しますか? (css/js/img)IFRAME onloadイベントはいつ発生しますか?
答えて
後者:<body onload=
は、すべての従属要素(css/js/img)もロードされている場合にのみ発生します。
あなたはHTMLがロードされたとき、あなたのHTMLの最後にこれを行う、JavaScriptコードを実行したい場合:ここで
<script>alert('HTML loaded.')</script></body></html>
は(負荷と準備の違いについてrelevant e-mail threadですjQueryは両方をサポートします)。
iframeだけでなく、メイン文書自体にも同じことが当てはまると思いますか? – MatrixFrog
ちょうどhtmlが読み込まれたときに、依存要素が読み込まれません。 (または私は思う)。ページのロードの残りの部分は、jQueryの(ウィンドウ).LOAD(関数(){行うかonready記述されていませwindow.onload時に起動するように
。
また、画像要素がロードされているかどうかを確認することができますし、そこに画像があればロードなど。
上記の答え(onloadイベントを使用)は正しいですが、場合によっては、これは間違っているようです。特に、Webコンテンツ用のプリントテンプレートを動的に生成する場合
動的なiframeを作成して印刷することで、ページの特定のコンテンツを印刷しようとしました。画像が含まれていると、 n画像がロードされます。それは常にあまりにも早くイメージがまだ不完全なプリントが得られロードされたときに発火:
function printElement(jqElement){
if (!$("#printframe").length){
$("body").append('<iframe id="printframe" name="printframe" style="height: 0px; width: 0px; position: absolute" />');
}
var printframe = $("#printframe")[0].contentWindow;
printframe.document.open();
printframe.document.write('<html><head></head><body onload="window.focus(); window.print()">');
printframe.document.write(jqElement[0].innerHTML);
printframe.document.write('</body></html>');
// printframe.document.body.onload = function(){
// printframe.focus();
// printframe.print();
// };
printframe.document.close();
// printframe.focus();
// printframe.print();
// printframe.document.body.onload = function()...
}
あなたはそれがあまりにも早く起動しますいずれにしても...私はonloadイベントハンドラをバインドするために、いくつかの方法を試してみた見ることができるように。ブラウザの印刷プレビュー(Google Chrome)には壊れた画像が含まれているのでわかります。印刷をキャンセルしてその機能をもう一度呼び出すと(イメージはキャッシュされます)、印刷プレビューは正常です。
...私は解決策を見つけました。きれいではないが適している。それは、サブツリーをスキャンして 'img'タグを探し、それらの '完全な'状態をチェックするものです。不完全な場合、250ms後に再チェックを遅らせる。
function delayUntilImgComplete(element, func){
var images = element.find('img');
var complete = true;
$.each(images, function(index, image){
if (!image.complete) complete = false;
});
if (complete) func();
else setTimeout(function(){
delayUntilImgComplete(element, func);}
, 250);
}
function printElement(jqElement){
delayUntilImgComplete(jqElement, function(){
if (!$("#printframe").length){
$("body").append('<iframe id="printframe" name="printframe" style="height: 0px; width: 0px; position: absolute" />');
}
var printframe = $("#printframe")[0].contentWindow;
printframe.document.open();
printframe.document.write(jqElement[0].innerHTML);
printframe.document.close();
printframe.focus();
printframe.print();
});
}
これは非常に有用ですthx – kofifus
- 1. onloadイベントが発生しない
- 2. JS - ロード時イベントは、これは、onloadイベント発生させます
- 3. iframeを使ったOnloadイベント
- 4. onLoadが複数回Iframeで発生する
- 5. iframeのボタンでイベントが発生する
- 6. jQuery onload - 動的にロードされるiframeで動作しないイベント.load() - イベント
- 7. JQuery Onload refresh iframe
- 8. iframe JavaScript onload
- 9. iframeでサイズ変更イベントが発生しない
- 10. url生成時にiframe onloadが機能しないpdf ouput
- 11. require.jsに切り替えた後にonLoadイベントが発生しない
- 12. onloadイベントが 'オブジェクトが期待されています'というエラーが発生しました
- 13. iFrameページリフレッシュ開始onload
- 14. IE11でiframe onloadが機能しない
- 15. asp.netでiframe onloadイベントを取得する方法
- 16. OnChangeイベントforiFrame onloadイベント付きHTML
- 17. iFrame本体にonloadイベントを追加しても動作しません。
- 18. SKErrorClientInvalidはいつ発生しますか?
- 19. Google Chromeのiframe body onLoadが機能していませんか?
- 20. Google ChromeでJquery Iframe onloadイベントが実行されていません
- 21. onchangeイベントはonmousedownイベント後に発生しますか?
- 22. DoubleClickクリック以外の場合、DoubleClickイベントはいつ発生しますか?
- 23. サイズ変更イベントは一度だけ発生します
- 24. OnLoadイベントのASP.NETページベースクラスで、派生クラスがOnLoadを呼び出せない
- 25. 別のiframe内のiframeのOnload関数
- 26. HTMLInstance.attachEvent onloadイベント
- 27. ホームページのonloadイベント
- 28. IFRAMES:contentWindow.beforeunload()とonload()の間のイベント
- 29. SQLDependency_OnChange - イベントは1つだけ発生します。時刻
- 30. iframe onload関数は未定義です
Internet Explorerを使用していない場合はいつでも起動します。 – Tortoise
iDeviceを使用していないときは、すべての要素がロードされたときに起動します。 – NoBugs
@ tortoise:私を笑顔にしてくれてありがとう。 – ling