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:

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

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

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

    ReplyDelete

You can use some HTML elements, such as <b>, <i>, <a>, also, some characters need to be entity referenced such as <, > and & Your comment may need to be confirmed by blog author. Your comment will be published under GFDL 1.3 or later license with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.