(IE5で)最速セレクターを作ってみた

cssQueryが非常に遅いので作ってみた。まぁ、古いから仕方ない。 http://kquery.if.land.to/code/selector.html http://kquery.if.land.to/slickspeed/ 上のslickspeedは、広告が自動挿入されるサイトにおいてあるため、実行すると結果が狂う可能性がありま…

CSSセレクターの実装方針メモ

js

最近、携わったサイトを見るとIE9割とかざらで、IE5.5が現役というのもあった。一番ましでもIE7>IE6>>当分越えられない壁>>Fx3>Fx2>>Safari3>Opera9=IE5.5ぐらいで、やはり、IEで高速に動かないと話にならない。となると、XPath変換とかはありえない(ちなみ…

IEで高速なセレクターを作るアイディアがわいたけど、うまく動かない。

<html> <head> <script> if (document.createStyleSheet) { window.__getElementsBySelector = function (selector, elem) { if (elem) { elem.style.behavior = null; var cache = window.__getElementsBySelector.cache; cache[selector][cache[selector].length] = elem; } };</head></html>…

Prototype.jsでクラス指定するとき、二倍速くする方法

$$(".warning"); // ↓ $$("*.warning"); // なぜか二倍ぐらい速い セレクターの特徴を掴むためにベンチにかけているんだけど、色々やってもこうなる。正確なベンチやった人とか、Prototype.jsに詳しい人、教えて下さい。

IE5でencodeURIするために、replaceの第二引数に関数を持ってこれるようにした

http://kquery.if.land.to/code/js/patch.js ここにencodeURIはあったので、第二引数を持てるようなString#replaceを作った。まぁ、原案自体はここで取り上げられていたものだから、これでlastIndexが使えないことを考えて、ちょっとだけ動くようにしただけ…

スタイル読み取り用の関数を作った

動作確認用 jQueryと違うのはgetComputedStyleとcurrentStyleの分岐が関数の外側にあることぐらいです。さぁ、セレクターを本格的に作る前に、依存関係の無いスタティックな関数から作っていこうか。

Function.prototype.applyとかArray.prototype.spliceのIE5用のコード

applyはObject以外のものをthisにしようとする場合、x.__applyに代入できないので、constructorからprototypeを辿って、そこに入れる感じ。Array関連はcall等を一切使わず、forだけで処理するように作りました。あと、全体をfunctionで囲んだ無名関数の実行…

属性読み取り関数を作った

IE5だと、in演算子、replaceの第2引数に関数が取れないことがわかった。あと、IEはマジでgetAttributeとかがシンタックスシュガーなので、キャメルケース変換が必要なのこともわかった。 書いたコード

IE5(5.5ではない)のJScriptの連想配列ではまりがちな点

js

var obj = { 123: 'abc' }; とキーが文字列以外だとエラーを起こす。 var obj = { '123': 'abc', a123: 'abc' }; obj[123] = 'abc'; 上のように文字列であると明示するか、文字で始まる識別子なら、問題は起こらない。もしくは添え字配列で突っ込む。これな…

名前空間のケチり方

js

jQueryの現在のコードだと、 window.$ = function () { return new $.prototype.init(); }; $.prototype = { init: function () { // コンストラクタ } }; $.prototype.init.prototype = $.prototype; こういう風にやっている。僕はあまり好きじゃない。でき…

UserAgentを使わないブラウザ判定を作った

これ。例のIE5+も動くjQuery用。winieとmacieとunknownを追加した。昼間載せたバージョンはIE5だと動作しなかった。IE5ではObjectの添え字は文字列だけのようだ。switchを使った実装に変えて回避。チェックはあまり終わっていない。 チェックしたブラウザ Wi…

jQueryを再発明することになった

jQueryのプラグインは使えなくてもいい、つまり、セレクターによるDOM選択、あとはラッピングされた属性、CSS、イベント、ついでにアニメーションというと実質jQuery全部が使えるIE5.xに対応したライブラリって無いかな? 無いよね? ということで作ることに…