2008-09-01から1ヶ月間の記事一覧

POST送信のページをブックマークするブックマークレット

あるサイトでは検索がPOSTで送信しないと結果が返ってこないので、ブクマできない。というわけで、ブクマするためのブックマークレットを作った。 javascript:for(var i=0,f;f=document.forms[i];++i)if(f.method.toLowerCase()=="post")(function(f){f.onsu…

ビルトインオブジェクトに拡張したい10のメソッド

js

ビルトインオブジェクトをこねくり回すのはあまり好まれない方法だけど、僕は好きなので、割とやりたくなる。というか、やる。でも、やりはじめると際限なく拡張したくなってしまう。というわけで、最近は、とりあえず10と決めているので、それを書いてみる…

DOMでFlashを再生するobjectタグを生成する際の注意点

多くのウェブブラウザ <object type="application/x-shockwave-flash" data="test.swf" width="128" height="128"><param name="movie" value="test.swf" /></object> こんなコードをcreateElementで作って、appendChildしたら再生される。 シェアが一番大きいけど、なんというか、微妙なブラウザ

半透明PNGとopacityでIEではまった

半透明PNGが背景に設定されている要素をフェードインさせようと思ったが、IEだと半透明部分が黒くなるので、ちょっと試した。 http://kquery.if.land.to/test/png/ 一つ目はdivに背景とopacity(IEにはfilter)を設定した。IE7だと半透明部分が黒くなる。 二…

最近のCSSの書き方

css

IE5を気にするとき、IE5.5を気にするとき、IE6以上で良いときで使い分ける。 HTML <link rel="stylesheet" type="text/css" href="styles.css" media="all"> styles.css @import url("all.css"); /*全体的なレイアウトの調整。フォントサイズとリンク色とか。IE4も読ませる*/ /*以下はIE6+向けのとき。中身は@mediaで絞る*/ @import</link>…

jQueryをIE5で動くように再発明しているわけ

自分のウェブサイト(非プログラマー向け)にjQueryで機能追加行った ↓ いいという意見もあるが、いまいちという意見もある(遅いとか) ↓ Google Analyticsをつけてみた ↓ ブラウザ内訳でIE6が50%、IE7が30%、IE5.5が3%のシェアを占めていることが分かる(…

==と===のまとめ

高速化 - uupaaの開発日記で==よりも===が良いと知る。 ↓ 早速実験するけど、速くならないよ、と記事を書いた。 ↓ 等価演算子と厳密等価演算子 in ECMA-262 3rd Edition - 0x集積蔵で型が違えば、厳密等価演算子の方が有利だと説明があった。 ↓ 納得しつつ、…

JavaScriptで文字列比較は抽象的等価比較の方が速い

以下は間違っているのでこれを参照して下さい。等価演算子と厳密等価演算子 in ECMA-262 3rd Edition - 0x集積蔵でString同士をやっていないので、やったら、結果が逆転しているような気がする。ただ、アルゴリズムを見る限りはどちらも同じような感じの経路…

厳密比較演算子が必要な場面

js

つまり、比較演算だと同じものとされるものの組み合わせ。 null==undefined ==false、==0、[]=="" false==[]、false==0、false==""、false=="0" 0==[]、0==false、0==""、0=="0" ""==[]、""==false、""==0 "0"==false、"0"==0 空のオブジェクトは含まれない…

え?

<html> <head> <style></head></html>

等価演算子(==)と厳密等価演算子(===)

PHPでは速くなるとあったので、一応、検証してみた。 結論 PHPではできる限り、厳密等価演算子を使うべき。

等価演算子(==)と厳密等価演算子(===)

以下は間違っているのでこれを参照して下さい。高速化 - uupaaの開発日記で高速化について書いてあった。最初のfor文の長さの参照とインクリメントの話とループ展開は知っていたけど、厳密比較演算子も速くなるというのは初めて知った。演算子にそんなに違い…

(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で囲んだ無名関数の実行…