CSSセレクタを書き直したなど

2年ぶりにCSSセレクタを書き直しました

前回との違いは

  • 前作の精度を98点とすると今回は96点ぐらい。W3Cの意地悪テストを幾つかスキップ
  • コード量が半分に。実行速度はほぼ同じ
  • jQuery拡張, :active, :visited は非サポート(:visited は空の配列を返す)
  • W3Cの仕様に無い :contains(), E[ATTR != VALUE] は非サポート
    • MobileWebKitモードでは動作せず。フルビルドモードでは一応動作させてる
  • uu.query(expr) が返すNodeArrayはドキュメントオーダーでソート済みの状態に
  • 前回は2ヶ月かけて開発。今回は3日

メジャーライブラリとの速度比較

http://pigs.sourceforge.jp/blog/CSSSelector/CSSSelectorTestSuite/slickspeed/

query2(API OFF) が js製のCSSセレクタのスコアで、query2(API ON) が querySelectorAll APIを利用した場合のスコアです。遅いブラウザ/古いブラウザで試すと分かりやすいかも。

ライブラリが読み込まれていないためにテストが途中で止まる事があります、そのような場合は(コントロールキーを押しながら)何度かリロードしてみてください(SlickSpeed のバグです)。SlickSpeed は iPhone だと動かないようです。