* onload 属性 (HTML, XHTML 1)
[1] [[HTML]] の [CODE(HTMLe)[[[body]]]] 要素と
[CODE(HTMLe)[[[frameset]]]] 要素の [DFN[[CODE(HTMLa)[onload]] 属性]]は、
[[UA]] が[[窓]]またはすべての[[フレーム]]を読込み終えた時に発生する[[事象]]に関する[[内在事象]]属性です。
[2] 仕様書:
- [[HTML 4]]
-- [CODE(HTMLa)[onload]] 属性
[10]
aaaaa
([[bb]] [ee] [WEAK[2006-10-29 13:35:48 +00:00]])
[14]
white studded belt
south jersey fertility
tights pussy
([[dorinvc]] [dorinta@yahoo.com])
[[#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]]
** メモ
[9]
[CITE[Internet Explorer の JavaScript の脆弱性に関する注意喚起]]
([[名無しさん]] [WEAK[2005-11-23 00:41:40 +00:00]])
[11]
[CITE[Bug 225244 – onload attribute not allowed in HTML tags other then BODY and FRAMESET]] ([CODE[2007-02-28 19:55:36 +09:00]] 版)
([[名無しさん]])
[12]
[CITE[A blog? with Σαιτω - onload と Safari]] ([CODE[2007-06-15 18:42:57 +09:00]] 版)
([[名無しさん]] [WEAK[2007-06-15 12:36:39 +00:00]])
[13]
[CITE[Safari and page load timing]] ([CODE[2007-06-16 11:18:57 +09:00]] 版)
([[名無しさん]] [WEAK[2007-06-16 02:24:23 +00:00]])
[[#comment]]
* メモ
[15] [CITE[''''''[''''''whatwg'''''']'''''' Load events fired during onload handlers]]
( ([TIME[2012-11-30 05:14:27 +09:00]] 版))
[16] [CITE@en[Bug 23508 – Browsers want to know when a page's scripts have finished 'loading', even if the scripts aren't delaying the 'load' event any more (e.g. they do computation on startup)]]
( ([TIME[2013-10-14 22:58:35 +09:00]] 版))
[17] [CITE@en[Web Applications 1.0 r8287 Clean up how we describe the 'delay the load event' logic for loading nested iframes]]
( ([TIME[2013-11-16 06:20:00 +09:00]] 版))