さようなら、インラインのイベントハンドラ
………、といきたいのだが、道は遠い。
購入
少しずつ読み始める。英語長文読解の参考書みたいに、コード全部を載せてから、上から順番に解説してくれるところが、いい。
あとは、DOM Scripting: Web Design with JavaScript and the Document Object Modelを注文するか
(Update 2008.02.27)
羽田野 太巳氏はWeb標準の日々に出たりネットで連載書いたりとDom Scriptingといえば的な人になりましたね。
『AJAX Webアプリケーション アイデアブック』を読んで分からなかった点。
window.onloadではなくイベントリスナーを推奨してるが、onloadのデメリットについて書いてないのが残念。
これは自分で調べて考えよう。
DOM Scriptingは良書。僕の疑問にきっちり答える本
ie6の:hover実装不備を補うやりかた
update:2008.3.11
IEにおけるcss実装の不備なんだから、cssだけでは解決しない。
MS謹製の解決方法は、csshover.htcというファイルと、behaviourプロパティ。
csshover.htcの中身は、javascript(jscript)のソースがぎっしり。
behaviourプロパティは、cssの仕様にはないIE独自のプロパティ。
htcファイルというのは、MSが独自に実装している技術で、HTMLコンポーネントという技術らしい(参考)
しかもhtcファイルの中身はたんなるスクリプトファイルであった(javascriptかjscriptかvbscriptかはわかりませんでした)。そしてさらにbehaviourプロパティはhtcファイル読み込みのために、MSがCSSに独自に追加したプロパティでした。
なので最初の驚きは薄れてしまった。マウスオーバーのアクションは:hover擬似要素を実装しているブラウザであればcssオンリーでできる。実装していないieのために、javascriptを使う必要があり、その場合も、構造と表現と振舞いを分離するためには、javascriptは外部ファイルで記述し、head要素からscriptタグのsrc属性でリンクを張るということになる。
csshover.htcとbehaviourプロパティの組み合わせはそれへの代案になるのかとちょっと驚いたが、結局のところ、head要素からscriptタグでjsファイルにリンクを貼る代わりに、cssファイルからスクリプトの記述されたファイルにリンクを貼ってるだけ、でした。
Update:2008.02.27
上記MS謹製の解決方法では、cssはvalidでなくなる。
validでないcssハックを使うことのデメリットはいくつかあるが、そのまま上記実装にも言える。
cssはvalidで、かつie6でもh3:hover{....}が使いたいならDean Edwardsの
IE7.jsをhead要素からscript要素で読み込むという選択肢がある。