DOM

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

2年ぶりにCSSセレクタを書き直しました前回との違いは 前作の精度を98点とすると今回は96点ぐらい。W3Cの意地悪テストを幾つかスキップ コード量が半分に。実行速度はほぼ同じ jQuery拡張, :active, :visited は非サポート(:visited は空の配列を返す) W3Cの…

IE8とIE9pp の非互換性(event)

IE9正式版ではなく IE9pp(IE9 Platform Preview) や IE9pp2 の現状について記載しています。IE9ppがDOMの仕様に合わせたため、IE8までとは互換性がなくなっている部分をちょこちょこ書いていきます。 IE9pp の event イベントハンドラが受け取る event オブ…

event.offsetX と offsetY の互換性について

IE9正式版ではなく IE9pp(IE9 Platform Preview) の現状について記載しています。event.offsetX/Y や event.layerX/Y から相対座標を取得できますが、DOM Lv0 のため仕様が無く、互換性もありません。今日はそれらの非互換性について調べてみました。event.o…

140文字以内で DOMContentLoaded

DOM構築完了またはそれ相当のタイミングで (どこかで定義されている)関数A をコールバックします。 function Z(){try{(new Image).doScroll();A()}catch(e){setTimeout(Z,0)}} +[1,]?document.addEventListener("DOMContentLoaded",A,!1):Z() 130byteで驚き…

mousemove + elementFromPoint でマウスカーソルが示すノードを取得

mousemove と elementFromPoint を使うと、マウスカーソル直下のノードを取得できます。 elementFromPoint のサポート状況 http://www.quirksmode.org/dom/w3c_cssom.html#t20 デモ http://pigs.sourceforge.jp/blog/20100401/test/uu.Class.ElementFromPoin…

jQuery.live っぽい実装

submit, focus, blur, change をクロスブラウザにする方法を追記しました。 最新版のコードを追記しました。 デモを追加しました。jQuery.live() は document.addEventListener(type, fn, capture) で、天辺までバブルアップしてくるイベントを拾う 拾ったイ…

document.matchesSelector 相当の機能を実装してみた

より効率的なコードに差し替えましたhttp://dev.w3.org/2006/webapi/selectors-api2/#matchesselector と id:javascripter さんの記事 Selectors APIのmatchesSelectorと、動的なページでのイベント処理via http://d.hatena.ne.jp/javascripter/20091018/125…

HTML5タグのtagNameが小文字になる

uuAltCSS.js は uuQuery.js にセレクタの処理を委譲しています。 <style> article>div:nth-child(even)>section { -uu-background-image: url(../../img/cover01.jpg); } </style> <article class="round"> article <div class="view"> <section class="round">section</section> </div> <div class="view"> <section class="round">section</section></div></article>

excanvas.js にさようなら。

リリースしました。 uupaa-selector.js Version 2.0 (ChangeLog) uupaa-mutationevent.js Version 0.1 (ChangeLog) uupaa-excanvas.js Version 0.1 (ChangeLog) uupaa-detect.js Version 1.0 (ChangeLog) uupaa-color.js Version 3.0 (ChangeLog) 内訳は世界…

CSSセレクタの開発から得られたノウハウのフィードバック + IE8でメソッドをフックする(HTMLElementプロトタイピング)

ここ数日は、CSSセレクタ(uupaa-selector.js)の高速化と同時に、DOM Level2 Mutation Events をサポートする小さなライブラリ(uupaa-mutationevent.js)を作っていました。uupaa-mutationevent.js は、 CSSセレクタにキャッシュを導入するなら、DOMツリーの改…

CSSセレクタがトータルで100倍速くなったからそろそろ終わり

function _fakeMutationEvents(elm) { elm.style.behavior = "none"; (function(n) { var fn = n.removeChild; n.removeChild = function(oldChild) { // DOMNodeRemoved uuClass.Selector.clearCache(); return fn(oldChild); } })(elm); elm.attachEvent("…

DOMNodeInserted と DOMNodeRemoved に似た仕組みを IE でも使えるようにして、セレクタの実行結果をキャッシュする

セレクタ(id, tag, class, css, xpath)の実行速度を改善するには、2つの方法があります。 ロジックを改善する キャッシュを使う 今日は2の方法について検討したことを書き残します。 心配事 キャッシュを使う上での心配事は「キャッシュが古くなったらどうす…

XPathは正規表現のDOM版です。

正規表現といえば、 文字列の検索や切り出しに大活躍。大量の規則や物量と格闘する際のバディ プロトコルをRFC(BNF)を見てゴリゴリ書くひとにとっての福音 モダン言語に100%存在する機能(無いほうがおかしい) なわけです。JavaScriptで雅な表現(スケスケとか…