CSSセレクタの最新版(uupaa-selector.js version 1.5)をリリースしました。

2008-11-27追記: version 2.0 が最新になります。

uupaa.js (ver 0.7)に実装されているCSSセレクタの機能を、単体で動作可能にパッケージしなおしたJavaScriptライブラリ(uupaa-selector.js)の最新版をリリースしました。

今回は、

  • 使用可能な場合は、DOM Element Traversal を活用します(主にOpera9.5x)。
  • :empty の bugfix(フラグリセット忘れ)
  • uu.klass を uu.className にリネームしました。
  • 独自仕様の正規表現検索オペランド(?=)を追加しました。
    • uu.css('script[src?="uupaa.*\\.js"]') とすると、src="uupaa{なにか}.js" を持つ script 要素を検索します。uupaa内部用に追加しました。フラグ(g,i,m)は使えません。
  • 細かな改善を行い、3〜5% 程高速化しました。数字的に微妙ですが。

を行っています。

手元の環境だと速度はこんなかんじ

IE6/7/8が混在できないので、2台のPCで測定しています。

PC1(Windows XP)

単位はms。±10msは測定誤差と思ってください。

Browser Ver 1.4 Ver 1.5
IE6 212 204
Firefox2.0.0.7 322 314
Firefox3.0.3 173 175
Firefox3.1b1 76 88
Opera9.27 176 164
Opera9.61 88 80
Safari3.1 12 8
Chrome 55 53
Total 1114 1086
PC2(Windows Vista)
Browser Ver 1.4 Ver 1.5
IE7 176 160
IE8 120 92
Total 296 252

CSSセレクタに関してはやれることをやりきった感があるので、これが最終リリースになると思います。

反省会

  • CSSセレクタの実装は、速度と精度を両立させる目標が最初にあったので、かなり面白くやれた。目標大事。
    • ただ、CSSセレクタXPathに変換する方式で一旦実装してるもんだから、その二度手間感といったら、すごかった。
  • せっかく作っといてなんだけど、IDセレクタ(uu.id) や クラスセレクタ(uu.className) のほうが、5〜100倍高速だったりするから、上手くマークアップしてあっちを使ってほしいなぁ…
  • :visited は ぜひ発展的な方向で使ってほしいなぁ…