JavaScript

strict モード対策

Firefox の JavaScript にはコードを厳格に解釈する strict モードがある。 [about:config] - [javascript.options.strict = true]この状態で、疑わしいコードを実行するとエラーコンソールに警告が出る(ロギングにつられてパフォーマンスも大きく落ちる)。 …

Firefoxで計算済みの背景色が取得できないケースがある

既知だろうから、これは自分用のメモ。 <html><head><title>checkbox bg-color</title> <style>.green { background-color: lime }</style> </head><body> <input id="tgt1" type="checkbox" checked="checked" class="green"></input> <input id="tgt2" type="radio" checked="checked" class="green"></input> <select size="1"> </select>

ローカルで動作するW3Cのテストスイートを公開します。

「全てパスした」とだけ書くと、あまり良くないことが起きそうなので、ローカルで動作するように修正したCSSセレクタのテストスイートを公開します。W3Cのテストスイート: http://www.w3.org/Style/CSS/Test/CSS3/Selectors/current/xhtml/index.html利用さ…

結実した

CSSセレクタに :notを追加実装し、名前空間を除くW3Cの互換性テストを全てパスした。

数値からカラーコード(#000000)を作る

(0x1000000 + num).toString(16).replace(/^1/, "#");

今からFlashも勉強する

http://www.sony.jp/products/Consumer/handycam/camwithme/main.htmlもっていかれたよ。ごっそりとね。

CSSセレクタの最大の欠点(Contextual Selector)はサポート可能か

id:vantguarde さんと、id:amachang さんが半年ぐらい前に http://web.g.hatena.ne.jp/vantguarde/20081030/1225341506さてさて、ひとつ残念なのが“Contextual Selector”という擬似クラスが結局導入されなかったこと。今のSelectors APIでは、「コンテキスト…

CSSセレクタで属性だけじゃなく、スタイルもクエリーできちゃうとすごく便利(かも)

「CSSセレクタって、CSSのルールで絞り込みはできても、CSS(スタイル)で絞り込みができないんだ…」って思ったことはありませんか?実験的なテーマになりますが、styleプロパティの値を、CSSセレクタでクエリーできるように構文を拡張してみました。 # 構文や…

Array かどうかを判定するいくつかの方法について

この日記はご指摘を元に再構成したものです。 昨日の続きです。jQuery1.3で、isArray や isFunction の処理が差し替えられています。 IE6で発生するメモリリークを回避するためのようです。isArray や isFunction などは基本的なロジックであり、かつjQuery…

jQuery1.3 がリリースされてます。

この日記はご指摘を元に再構成したものです。 ざっと見ました。 1.3β1のバグがいくつか修正されています。 ID,CLASSセレクタのUNICODE判定で16進数と10進数の勘違い 修正前: /#((?:[\w\u0128-\uFFFF_-]|\\.)+)/, 修正後: /#((?:[\w\u00c0-\uFFFF_-]|\\.)+)/,…

SlickSpeed が信用できない

SlickSpeed は 設定ファイル(config.ini)を修正することで、セレクタの評価順序を変更することができますが、先頭と最後に設置したセレクタのスコアがおかしくなるようです(速くなる) 順番を入れ替えるとこうなります 同じ実装(selector と keep_selector) …

正規表現のベンチマーク(String.match と RegExp.exec のざっくりとした違い)

2009-01-12追記 タイトル修正しました。 2009-01-14追記 String.indexOf と RegExp.test のスコアが逆に書かれてていたのを修正しました。 String.match ばかりで、RegExp.exec を使ったことがありませんでした。 ちょっと気になったので色々とベンチマーク…

Firebug 1.3 から 1.2.1 へ戻した理由

スクロールに酔ったから 1.2.1と比べて不安定な気がしたから(うまく表現できない) Firebugのスクリプトタブで、ブレークポイントが設置可能な行(Firebugがコードをパースし終わった行)は、行番号が緑になり太字になりますね。私の環境だけかもしれませんが、…

各ブラウザが返す色名(文字列フォーマット)の違いを吸収する

CSSセレクタで style を絞り込めるように機能を拡張している最中なんですが、document.defaultView.getComputedStyle(element).color ってブラウザ毎にフォーマットが違うので、まずはそれをあわせこむ部分の実装からやってます。 # IE だと currentStyle.co…

ソースコードをディアゴスティーニ方式でリリースするとか

毎週毎週メールで、最新のパーツが届くよ! しかも送料無料 途中から購読も可能! もちろん途中解約もOK! 毎号届くパーツ(ソースコードの一部)を組み合わせると、最後にはステキなプログラムが完成だ! 図解入りのソースコード解説書が付いてくるから、初心者の…

CSSセレクタにテコ入れした

# 昨日の日記の続きです。 Browser Test kQuery uupaa.js+ テコ入れ peppy(cache on) peppy(cache off) sizzle-0.9 jQuery 1.2.6 IE6 A0 248 153 287 294 338 369 A1 611 604 1447 1507 1420 1100 IE7(別PC) A0 144 116 - - 266 306 Firefox2 A0 294 237 138…

CSSセレクタ テコいれ中

→ ofkさんに抜かれたみたい。 → 加速装置投入。2〜6倍速に。 → W3Cのテストで不具合発見(デグレ) → 再度暴速化 → またも別のデグレ発見 → んもぉー。 → ふてね。 → 小人さんが夢の中で良い方法を思いついてくれたよ! → むっくり起きて実装再開 → リビジョン…

ベンチマークを完走させる

ベンチマーク中に「なんかビジー。スクリプト止めとく?」なダイアログで、台無しになってしまうことがあります。今日はそれを回避する設定をご紹介。 IE: レジストリに新しい値を追加することで可能 KEY: HKEY_CURRENT_USER/Software/Microsoft/InternetExpl…

IE とそれ以外のブラウザを切り分けている判定の数が 5.6 倍違う

uupaa.js には、UserAgent の情報を保持する Hash があります。 uu.ua = { ie: !!document.uniqueID, // IEでtrue opera: !!window.opera, gecko: /Gecko\//.test(navigator.userAgent), webkit: /WebKit/.test(navigator.userAgent) }; uu.ua.ie で切り分け…

CSSセレクタで計算済みのstyleプロパティの値も検索できたら便利かも

検索対象は、style属性に書かれている値ではなく、リアルな(計算済みのstyleプロパティの)値 # IEなら、element.currentStyle, それ以外なら document.defaultView.getComputedStyle(element, "") の値 var nodeList = document.body.querySelectorAll("div …

UnitTest もどきを書いてみた

uupaa.js にはテスト用のフレームワークがありませんでした。 uupaa.js 0.7 は例により、フルスクラッチ(スクラップ?) & ビルド なので、いよいよテスティングフレームワークが必要に。JsUnitなどの導入も検討したのですが、好みと違ったので uupaa.js の機…

getter と setter は混ぜないで

代入と参照 変数に値を設定し取得するには = を使います。 obj.name = "setter"; // obj.name に "setter" を設定する var a = obj.name; // obj.name の値を取り出し a に代入する すごく自然ですね。 = が左にあるか右にあるかで、コンパイラは代入(lhs)か…

Googleトレンド in JavaScript ライブラリ

今年もがんばります。 さて 6ヶ月ぐらい前から、JavaScript ライブラリ界隈ってどんな空気で誰が支配してるの? が気になり始めました。 んで、jQuery, Prototype.js, Ext.js MochiKit, Mootools の検索ノード数や検索キーワードを記録してました。 # YUI と …

amachang の 「一行で IE の JavaScript を高速化する方法」を掘り下げてみた

2009-11-12 ナビ子記法について追記しました 本文 今日は、amachangさんの記事 http://d.hatena.ne.jp/amachang/20071010/1192012056 を 1mm だけ掘り下げ、IE 以外のブラウザでも document へのアクセスを速くする方法がないか、色々試してみます。 # 記事…

Mutation Event は、薬にも毒にもなるから気をつけて

jQuery1.3β みた(jQueryのコードをまじめに見たのは、これが初めてかも) 比較演算子(==)が厳密比較演算子(===)に jQuery の CSSセレクタが、Sizzle 0.9 になった。 以前の Sizzle に存在した“Firefox,Operaでクエリ結果をキャッシュする機能”が、Sizzle 0.9 …

初心に帰れるうちが花

今後の uupaa.js の形を決めました。 これまで uupaa.js ファイルに必要と思われる機能をギチギチに詰め込んでる。 コードの可読性が低い + version間でdiff取れない(弄りすぎ)。 uu.module() でモジュールを読み込むと色々機能が増えるみたいだけど、実用性…

今年のアレは今年のうちに

とある方曰く、以下のコードはもっと短縮できるとか function piyo() { for (var i = 0; i < 10; i++) { } } piyo(); 曰く「"var " は削れる。これでマイナス3バイトです」 function evil(i) { // 引数 i を追加した for (i = 0; i < 10; i++) { // var を削…

依存関係を考慮した部品の読み込み Feature List

思えば、JavaScript を学び始めて、最初に立ちふさがった壁が「IEと他のブラウザで動きが違う」「include すら無い」でした。 これって、プログラミング初学者に誤解を与えるには十分な威力です。それゆえ「文字を点滅、広告を次々に表示、画面を揺らす」な…

YUI Compressor 2.4.1 で Minify + 難読化 + zip圧縮 すると、より小さくなる

JavaScript のソースコードの圧縮にYUI Compressor 使ってます。 # 他のコンプレッサーに浮気したことが無いので、他のはよくわかりません。ずっと、2.3.5 を使っていたのですが、2.4.2が出ていました。2.4.1以上で 11.1kB(11370byte) のソースコードを Mini…

楽天ad4Uの隠しリンクを露出させるユーザスタイルシート

高木先生のブログで「楽天が :visited を使いユーザの履歴を盗み見ている」とあった(要約)。CSS セレクタ作者として「いつかは…」と思ってましたが意外に早かった。 嫉妬混じりの批評もあるみたいだし。このような用法に対しては事前に考える時間があったの…