Jintrick.netagenda2008年07月アーカイブ → 2008年07月24日

body要素書き換え

例の件」について反論、ちゃちゃ入れは歓迎する。ユーザスクリプト歴何年かとか肩書きとかは問わないし、反応するかどうかはこっち次第だけど。「例の件」は散文的変数。

ドキュメントに修正を入れるんであれば、使わず普通にやったほうがいいと思う。

私ならビューとの分離はdisplay: none;でやる。

これは結城浩氏訳のOperaのドキュメントに書いてあった。

EfficientJavaScript - Dev.Opera - 効率的な JavaScriptを読めていないな。複数の変更を要素やその中味に行うなら, そしてこの変更を一回の再描画にまとめられないなら, と但し書きしてあるとおり、displayプロパティの変更で一度は隠したとき, もう一度は再表示したときに再フローが二回起こる。二回と一回なら、一回のほうがいい。

DocumentFragmentが役に立つのは、10個も20個もappendChildするときに一旦ストックしておくとか、ナビゲーション内部の部品をあらかじめ作っておいてtdとdivのそれぞれに入れるとか、そういう場面だと思う。

bodyの中身全部消して全部追加とか神経質すぎるし、本末転倒。

単純化のためbodyの中身を総入れ替えする例は挙げたが、某氏含め、やたらそこに拘るのは何なんだろう。文書ツリーを多数回変更するときはDocument Fragmentを経由するの後半で、「実際には(中略)部品化して使う」って書いてあるじゃねーかよ。まあ自作のGoogle応用とかクックパッド応用(非公開)では実際にbody総入れ替え的な手法を使っているけど、別に神経質でやっているわけではない。きっちり理由があってやっている。特に本末転倒にもなっていないなあ。意味がよくわからん。別に拘らないけど。

Google検索結果をリキッドマルチカラムで一望し、次の検索結果を先行読み込みして高速に表示し、かつ履歴で戻れるGreasemonkeyスクリプト (agenda)は「AutoPagerizeと相性悪い」がゆえにスクロール嫌いなjintrick専用のAjaxアプリケーションだけれども、1) コンテンツの構造を全書き換えし、かつ 2) 専用のインターフェイスを作るのに、元の文書の「修正」なんて馬鹿げた手法は使っていられない。全部書き換えたほうが速いしメンテしやすい。


webmaster@jintrick.net
公開: 2008年07月24日
カテゴリ: DOM ,Javascript