2009-09-30

documentに対するloadイベント

昨日、DOM要素が全部構築され終わった後に、Javascriptのコードを実行させたくて、window.addEventListener("load", ...)、と書こうとしたのだが、誤って、document.addEventListener("load", ...)、と書いてしまった。Chrome, Safari, Firefoxでは、動かなかった。

ところが、Operaでは動いた。

どちらの挙動が正しいのか、よく分からない。

DOM level 3 Eventでは、documentに対して使えるように読めるが、「リソースを読み込んだ場合」とだけあり、よくわからない。windowに関しては、当然ながら、規定されていない。

HTML5では、documentに対しても、windowに対しても、使えるように読める。ただし、いつ発動するのかという規定がない。なぜ、HTML5は、このような重要だが地味な各イベントがいつ発動するのかということを規定していないのだろうか。こういう地道な所こそ、真先に埋めておくべきだと思うのだが。

4 comments:

edvakf said...

あれ、Opera 10 からはサポート 375;なくなるって話だったのですが…
http://my.opera.com/hallvors/blog/2009/05/20/the-day-supporting-document-onload-became-a-bug

江添亮 said...

Opera 10を使っていますが、動きますね。
しかし、結局、loadイベントが一体どういう物かということを、キッチリ決めている規格は存在しないんですかね。

Anonymous said...

> いつ発動するのかという規定がない。
http://dev.w3.org/html5/spec/Overview.html#read-html とか
http://dev.w3.org/html5/spec/Overview.html#delay-the-load-event
では不十分という意味ですか?

江添亮 said...

おお、そんなところに。