昨日、ウェブページの特殊効果を書いていると、いつもエラーが発生しました。私は今日、例を見るまでその理由を知りませんでした。
JavaScript の document.onLoad を使って関数を指定するのは、Body タグに onLoad を追加するのと同じだと思っていましたが、今日の例を通じて、ページの読み込み時に document.onLoad がトリガーされないことがわかりました。
サンプルコードは以下のとおりです。 (テスト環境 Win2003 + IE7)
1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2<html>
3<頭>
4<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
5<title>無題のドキュメント</title>
6<スクリプト言語="JavaScript">
7関数mytest(){
8 アラート(document.getElementById("my2"));
9}
10document.onLoad = mytest();
11</script>
12</頭>
13
14<本体>
15<p id="my2">テスト内容</p>
16</body>
17</html>
この例の htm ファイルを開くと、ページが完全に表示されていないとき、つまり画面が白いときに、プロンプト ダイアログ ボックスがポップアップ表示されます。これは、ページが完了していないときに mytest が呼び出されるという意味です。
document.onLoad という文をコメントアウトし、body タグを
<body onLoad="mytest()">
に変更します。
ページを再度開きます。Mytest は、ページが読み込まれた後にのみ呼び出されます。理由はわかりません(笑)。