ちょっと切ない JavaScript の話。
onload で複数の処理を行うために、Observer パターンを使おうと思ったわけです。ファサードになるファンクションを設けるのも良いけど、融通が利きにくいし。
というわけで、document にリスナーオブジェクトを登録&実行したんだけど、これがピクリとも動かない。原因は、document.onload が存在しないこと。何故。じゃあ、body タグに書く onload は何に対応するんだ。色々イジった結果、自作の処理とバインドできる onload は、window オブジェクトのそれだけの模様。
document.writeln(document.onload); // 結果は undefined document.writeln(window.onload); //結果は null (バインド可能)
ちなみに、一番上のスコープで this と書くと、window を指すみたい。ということで、
this.addEventListner("doSomething", lintener1); this.addEventListner("doSomething", lintener2); this.onload = this.dispatchEvent( {type:"doSomething", target:this} );
こんな形になりました。厄介だ。
このエントリーのトラックバックURL
http://www.deftrash.com/admin/mt4/mt-tb.cgi/265
- javascript from PukiWiki/TrackBack 0.2 at 2006年3月13日 04:01
- javascript/ウィンドウサイズの変更 javascript/ページをプリントする javascript/1つのフォームから2つのCGIにsubmi... [続きを読む]
- dT at 2008年12月15日 14:47
おっしゃるとおりで、bodyタグのonloadに対応するのは、 document.body.onload ですね。
ただ、document.body.onload は、FireFox が対応していないんですよね。その意味では、window.onload の方が実用性があると思います。
コメントありがとうございました。
body タグに書く onload は document.body.onload でいいはずです。