IT戦記 このページをアンテナに追加 RSSフィード Twitter

2008-01-16

Opera 9.5 の Date().getYear() が IE と同じ仕様に

JavaScript の以下のコードは

Date().getYear()

ブラウザによって 108 を返したり 2008 を返したりする

ちなみに、仕様的には 108 が正しい。

今までの Opera の場合は仕様通り 108 で処理していたが、 Opera 9.5 で互換性重視で 2008 になったようだ。

こうコロコロ変わられてはブラウザ判定してても意味がないので、以下のように判定することにした。

var year = Date().getYear();
year += (year > 1900) ? 0 : 1900;

いやー。ダサいのは分かってるんだけどー><

きっと、このようなコードがのちに 3800 年問題と呼ばれるに違いない(違

IE 重い

IE関数呼出しが重いから致命的だ。 jQuery とかみたいに、何段も何段も関数をかましてるライブラリがかなりもっさりしてしまう。

IE では、関数呼出しと DOM プロパティアクセスは速度的にあまり変わらない。

つまり、 DOM に効率よくアクセスするために関数を作る意味があまりない。

なので、速いコードを書きたければ不本意ではあるが関数を減らすのがいい。

空の jQuery オブジェクトを作る方法

空の jQuery オブジェクトは以下の方法では作れませんでした

$() // => <document>

$().ready とかやるために、 document が選択されるようになってるんですね。

というわけで

$([]) // => <>

これでいけた