タグ

関連タグで絞り込む (0)

  • 関連タグはありません

タグの絞り込みを解除

JavaScriptとjavascriptとDOMに関するn2sのブックマーク (86)

  • length プロパティのパフォーマンス: Days on the Moon

    「for 文 2.0」(IT戦記) では length プロパティの評価をループの外に出すことにより高速化を図っています。DOM の NodeList オブジェクト (document.getElementsByTagName() などで取得) や HTMLCollection オブジェクト (document.forms などで取得) の length プロパティは「生きている」(オブジェクト取得後の操作が反映される) 、すなわち誤解を恐れずいえば評価のたびに数えなおす必要があるので遅いというのも納得ですが、JavaScript のネイティブオブジェクトである配列の length プロパティはどうなのでしょうか。実際に調べてみました。 以下は 10000 個の span 要素に対する NodeList オブジェクトと配列の length プロパティのパフォーマンスを調べた結果です。数値は

  • MSIEでDOM Level2 HTML

    はじめに XML/(X)HTML文書の動的な制御には、DOMがよく使われるけれども、MSIEでは云々…という話がしょっちゅうある。ここでの目的は、ぽかぽかWeb研究室のDOM Level 2 標準技術をMSIEで使うシリーズ(イベント、基操作、XML読み込みとXPath)と同様、MSIEも視野に入れつつなんとか標準技術の便利さを享受しよう、というアプローチ。別名、悪あがき。 今回はECMAScript(JavaScript,JScript)を用いてDOM2HTMLのプロトタイプをあれこれいじれるようにしてみたい。 DOM Level2 HTMLのプロトタイプ ECMAScriptには、プロトタイプ(雛形)にプロパティを追加してやると、同じ雛形を用いてコンストラクタ(工場)から生成されたオブジェクトはみんな同様のプロパティを持つ/扱えるようになる、という仕組みが採用されている。で、ECMA

  • IEでHTMLElement.prototypeの代替手段 - Thousand Years

    FireFoxなどにあるHTMLElementのprototypeに共有の便利メソッドを突っ込みたいという欲求があるんですがIEでは実装されていないのでうまくいきません。googleっても出てこねぇよ!ということで仕様読む。MSDN見ていたらどうやらIEではDOMイベントなどの定義にはprototypeではなくHTC(HTML Component)という機構で実装されているからだそうで…*1 DIVエレメントに共通のonclickイベントを仕込む 以下のスクリプトは全てのDIV要素にonclickイベントを仕組むスクリプトです。alert("hoge");されます。 ■hoge.htc <public:component> <public:attach event="onclick" onevent="hoge()" /> <script language="JScript"> funct

    IEでHTMLElement.prototypeの代替手段 - Thousand Years
    n2s
    n2s 2008/03/18
    HTCを使う方法
  • IEで複数行選択のselect要素を作る (それなりブログ)

    javascriptのIE6用クロスブラウザ対応の話です。 仕事javascriptを使うと普段はスルーしていた だるい部分をスルーできなくなり、必然的にこういう内容が多くなります。 普通の複数行選択select要素の作成方法 var select = document.createElement("select"); select.multiple = true; alert(select.type); // "select-multiple" XP-FireFox1.5とMac-Safari2で確認しました。 糞XP-IE6の場合 var select = document.createElement("<select multiple>"); alert(select.type); // "select-multiple"; multiple属性にtrueを入れる方法だと、ク

  • Opera の id, name 問題 - IT戦記

    Opera たん… getElementsByName で id もとれる // <input name="foo" id="bar" /> // <input name="bar" id="foo" /> var elms = document.getElementsByName('foo'); alert(elms.length); // 2 ( id="foo" のほうも選択しちゃう ) getElementById で name だけとれる // <input name="foo" id="bar" /> // <input name="bar" id="foo" /> var elm = document.getElementById('foo'); alert(elm.id); // bar

    Opera の id, name 問題 - IT戦記
    n2s
    n2s 2007/11/10
    ちょうど今読んでるfutomiさんの本でも取り上げられていました。Opera 9.5では修正されるんですね。
  • DOM Events とブラウザの実装: Days on the Moon

    ブラウザ上でのイベント処理の仕組みは DOM 2 Events および DOM 3 Events 草案にて規定されています。しかし、DOM 2 Events で言及されていない部分など、細かい動作はブラウザごとに異なっていることもあります。そうした仕様と実装の差異を、「作って納得! DOM 2 Events」で触れなかったものも含めて、いくつかまとめてみました。 ターゲットフェーズで呼び出されるリスナ DOM 2 Events のイベントモデルにおいて、あるノードでイベントが発生すると、そのノードの祖先ノードのイベントリスナが呼び出されるキャプチャリングフェーズ、そのノード自身のイベントリスナが呼び出されるターゲットフェーズ、再び祖先ノードのイベントリスナが呼び出されるバブリングフェーズと、3 段階にわたってイベントが伝播していきます。このうちターゲットフェーズでは、addEventLis

    n2s
    n2s 2007/10/17
    OperaとFirefox等ではuseCapture=trueなイベントハンドラの扱いに差異がある、等