window.onload
とイベントに問題がありdocument.onload
ます。私が読んだすべてのことは、DOMがすべてのリソースで完全にロードされるまでこれらがトリガーされないことを示しています.これは私には起こっていないようです:
Chrome 4.1.249.1036 (41514) と IE 8.0.7600.16385 で次の簡単なページを試してみましたが、どちらも「失敗しました!」というメッセージが表示され、myParagraph
ロードされていないことが示されました (そのため、DOM が不完全に見えます)。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<script type="text/javascript">
window.onload = doThis();
// document.onload gives the same result
function doThis() {
if (document.getElementById("myParagraph")) {
alert("It worked!");
} else {
alert("It failed!");
}
}
</script>
</head>
<body>
<p id="myParagraph">Nothing is here.</p>
</body>
</html>
外部の .js ファイルで、これよりも複雑なスクリプトを使用していますが、これは問題を示しています。window.onload
タイマーを 0.5 秒実行するように設定することで動作させることができますdoThis()
が、これは洗練されていない解決策のwindow.onload
ように思えます。別の解決策は、DOM がロードされているかどうかをチェックするタイマーを設定することです。そうでない場合は、0.5 秒後に自分自身を呼び出します (DOM がロードされるまでチェックし続けます) が、これは私には複雑すぎるようです。
使用するより適切なイベントはありますか?