Ajaxのものづくりを始めて、JavaScript の奥の深さを改めて感じている。
感じとしては、アポロ13 と似てる。
ヒューストン(サーバー)から見るとシャトル(ブラウザ)には限られたリソースしか送ることができない、向こうの状態も詳しくはわからない、だからなんとか工面し、機体のバグも利用するといった機転を効かせないと帰ってこれない。…そんなイメージ。
で、やっぱりめんどいのは各ブラウザごとの挙動を吸収するあたりだけど、Internet Explorer には HTML の条件付きコメントに相当する条件コンパイルとやらが存在することを発見。
ちなみに HTML の条件付きコメントとは下記のようなもの。
<!--
ここは普通のコメントブロック。
何を書いても無視されます。
-->
<!--[if gte IE 5.5000 ]>
ここはIEの5.5以上だと無視されない(コメント扱いされない)ブロック。
あなたはIE5.5以上を使ってますね! とか。
<![endif]-->
構文とかは 条件付コメント(Conditional Comments)実験ページ あたりが詳しいです。
IE のスタイルシートの理解はバカタレなのですが、この条件コメント拡張は非常にいいかんじです。IE 以外のブラウザからはただのコメントにしかみえないわけです。
で、同じように、JavaScript内で、
/*@cc_on @*/
/*@if (@_jscript_version >= 4)
alert("JScript バージョン 4 以降です。");
@else @*/
alert("最新のスクリプト エンジンが必要です。");
/*@end @*/
みたいなことができるらしいです。
詳しくは、MSDNの解説ページ