* onload 属性 (HTML, XHTML 1) [1] [[HTML]] の [CODE(HTMLe)[[[body]]]] 要素と [CODE(HTMLe)[[[frameset]]]] 要素の [DFN[[CODE(HTMLa)[onload]] 属性]]は、 [[UA]] が[[窓]]またはすべての[[フレーム]]を読込み終えた時に発生する[[事象]]に関する[[内在事象]]属性です。 [2] 仕様書: - [[HTML 4]] -- [CODE(HTMLa)[onload]] 属性 [[#comment]] ** 代替 [3] 内在事象属性は[[表現と構造の分離]]の原則に反するので、 好ましくないと考える人もいます。また、 [[DOM 0]] に基づく古い設計です。 代わりに、 [CODE(HTMLe)[[[script]]]] 要素などにより関連付けたスクリプト内で [[DOM 2]] 以上の[[事象]]に関するメソッド等が利用できます。 DOM 水準2 や DOM 水準 3 の HTML 事象モジュールはこの属性に対応する DOM の事象 [CODE(DOM)[[[load]]]] を用意しています。 [[#comment]] ** 属性値 [4] この属性の値は [CODE(SGML)[%[[Script]]]] です。 [[SGML]] 的には [CODE(SGML)[[[CDATA]]]] です。[[スクリプト言語]]は、 [CODE(HTTP)[[[Content-Script-Type]]]] によります。 [5] この属性は省略可能です。 [[#comment]] ** 他との関係 [6] この属性に対応する DOM の事象は [CODE(DOM)[[[load]]]] です。そちらもあわせてごらんください。 [7] 反対の意味の [CODE(HTMLa)[[[onunload]]]] 属性もあります。 [[#comment]] ** 例 [8] 新しい窓の読込み時の動作を規定する例 (JavaScript) [SRC[HTML 4 18.2.3]] [PRE(HTML)[ ]PRE] なんで HTML 4 仕様書がわざわざこんな例を [Q[interesting]] とかいって取り上げているのか謎です。 DOM 水準 0 では [CODE(JS)[window.onload]] で [CODE(HTMLe)[body]] 要素の [CODE(HTMLa)[onload]] に access できるのでしょうか? 新しい窓の読込み時の動作を規定する例 (Tcl) [SRC[HTML 4 18.2.3]] [PRE(HTML)[ ]PRE] それに、 [CODE(DOMm)[[[open]]]] したあとに [CODE(DOMa)[onload]] を設定しても、場合によっては既に読込みが終わっているのではないかと思うのですが、 DOM 水準 0 ブラウザの実装との絶妙なバランスによって正しく動作していたのでしょうかねぇ。 [[#comment]] ** メモ [[#comment]] * メモ