「文書ツリーを多数回変更するときは、直接行なわずにDocument Fragmentを経由してくれ」という話。 一度DOMの実装を書いてみるなり、書こうとしてみるなりすれば分かる。DOM文書ツリーの変更、特にHTML文書におけるそれがどれだけの要素に影響を与えるかが。Document Fragmentの何が良いかといえば、例えば「View」から切り離されていることが挙げられると思う。DOM実装に依存するし想像でしかないけれども、文書ツリーに直接何らかのノードを加えたり削除したりすると、表示スタイルの計算にリソースを多少なり消費するが、Document Fragment中のノード群を操作する限りスタイルは関係ない。操作が完了した後に実際の文書ツリーに一回だけ変更を加えるなら、スタイルの計算も一回ですむ。文字列連結を何度も繰り返すか、それとも文字列の配列を一回だけjoinするかの違いを連想して
ブラウザ上でのイベント処理の仕組みは DOM 2 Events および DOM 3 Events 草案にて規定されています。しかし、DOM 2 Events で言及されていない部分など、細かい動作はブラウザごとに異なっていることもあります。そうした仕様と実装の差異を、「作って納得! DOM 2 Events」で触れなかったものも含めて、いくつかまとめてみました。 ターゲットフェーズで呼び出されるリスナ DOM 2 Events のイベントモデルにおいて、あるノードでイベントが発生すると、そのノードの祖先ノードのイベントリスナが呼び出されるキャプチャリングフェーズ、そのノード自身のイベントリスナが呼び出されるターゲットフェーズ、再び祖先ノードのイベントリスナが呼び出されるバブリングフェーズと、3 段階にわたってイベントが伝播していきます。このうちターゲットフェーズでは、addEventLis
const xpathResult = document.evaluate( xpathExpression, contextNode, namespaceResolver, resultType, result, ); evaluate() 関数は 5 つの引数を取ります。 xpathExpression: 評価する XPath 式を文字列で指定します。 contextNode: xpathExpression を評価する対象となる文書内のノードを指定します。指定されたノードの全ての子ノードに対しても評価が行われます。もっともよく使用される値は document ノードです。 namespaceResolver: xpathExpression に含まれるあらゆる名前空間接頭辞を渡され、その接頭辞に対応する名前空間 URI を表す文字列を返す関数です。この関数により、 XPath 式で使
DOM APIを使用して作ったDOMツリー、うまく生成されているか見てみたい事は多々ある。少なくともオイラはある。簡単にテキスト表示してくれると嬉しいなぁと常々思っていたのだが発見した。 Firefox(というかMozilla系かな)限定だろうけどXMLSerializerがあるのだ。 使い方は簡単。 var serializer = new XMLSerializer(); //略 var root = document.createElement('div'); var anchor = document.createElement('a'); var aText = document.createTextNode('はてな'); anchor.setAttribute('href','http://www.hatena.ne.jp/'); anchor.appendChild( aT
とてもシンプルに自分自身が属する script 要素を取得 http://d.hatena.ne.jp/amachang/20061201/1164986067 document.writeをDOM仕様にする http://nyarla.net/blog/javascript-tips1 あたりに着想を受けて、作ってみました。 http://la.ma.la/misc/js/lazy_writer/ 特定のscript src内のdocument.writeをピンポイントに置き換えることができます。 制限事項としては、document.writeを使ってscriptタグを生成するようなコードの場合、IEではinnerHTMLにscriptを書いても実行されないという仕様があるので実行されません。その点を除けば、IFRAMEをdocument.writeで挿入するような、良くある広告系のdo
ウェブ魚拓は、ウェブページを引用するためのツールです。ブログや掲示板に、記録した魚拓のURLを貼って利用できます。
DOMユーザーの方は、このようなことが出来たら良いと思ったことはありませんか? NodeListのクローンを作成する NodeListをそのままappendChildのパラメータにする もちろんこのようなことは出来ません。NodeListのitem一つ一つのクローンを作成し、一つ一つをappendChildしなければならないのです。しかし、DocumentFragmentを利用することによって、このような感覚の操作をすることが可能になります。 Foot note この記事のURI参照 http://members.jcom.home.ne.jp/jintrick/Personal/documentFragment.html#seeds ここに、文書A、文書B、文書C があったとします。 文書A <rootA> <item /> <item /> <item /> <
未だにちょくちょくみてしまうprototype.jsの簡単なリファレンスであるDeveloper Notes for prototype.jsの日本語版とThe Document Object Model in Mozillaで配布されているGecko DOM ReferenceのZIP version (古い奴)をHTMLヘルプにしてみた。HTMLヘルプはちょっと作ってみちゃったりすると、HDD上にあるありとあらゆるHTMLのドキュメントをHTMLヘルプにしたい欲求に駆られてしまう・・・のは僕だけですか、そうですか。 prototype.jsの開発メモ Gecko DOM Reference prototype.jsの開発メモの方はHTMLに手を入れて、メソッドやプロパティにidを振り、キーワードでジャンプできるようにした。HTMLヘルプ向けにCSSもちょっと調整。チェックしきれてない説
XHTML+CSSでは、ページ構造を意識して制作することが大切。Firefoxの拡張ツール「Web Developer Toolbar」を利用して、テーブルレイアウトの構造、フルCSSのページ構造、見出し構造、非推奨要素を確認する方法を説明しよう。 Firefoxの拡張ツール「Web Developer Toolbar」 Firefoxでは「Web Developer Toolbar」(以下、WDT)という高機能な拡張ツールが利用できる。名前のとおり、Web開発者向けのツールバーであり、CSSやJavaScriptの無効化、画像表示の無効化、ソースのバリデーションなどをツールバーから直接実行することができる。 まず、インフォアクシアで公開されているWDT日本語版をインストールしよう(http://www.infoaxia.com/tools/webdeveloper/)。Firefox(ま
Javaプログラミングの理由 XML文書を操作する、というと、XSLTを用いた変換を思い浮かべる人が多いかと思います。しかし、ちょっと凝ったことをしようとすると、XSLTよりももっと強力なツールが必要になります。この連載ではそういったときに頼りになる、Javaを用いたプログラミングを取り上げます。 XSLTはもともと、任意のXML文書を変換するために作られました。そのために比較的柔軟なツリー変換の機能を持っていますが、汎用的な変換のための言語というわけではありません。手続き的な処理の記述は難しいところがありますし、ユーザーと対話しながら変換を進めるような処理も想定されていません。 また、開発しようとしているプログラムが、大げさなXML文書の変換処理をするのではなく、単純にXMLのデータにアクセスしたい、という場合も多いでしょう。例えば、プログラムの設定ファイルをXMLの形式で記述させるよう
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く