ただ、どんな場合でも上位のDOMノードをゴソッと差し替えて高速化する方法を使うべき、とは言えません。
DocumentFragmentを用いて要素を切り貼りすると、著者スクリプト等が動作しなくなることは私もよく経験しているので、そのスクリプトを検証するまでもなく確かにその通りだと思う。そして文書ツリーを多数回変更するときはDocument Fragmentを経由する (agenda)は、確かにどんな場合でも
と言っているように読める。
ここは素直に謝りたい。申し訳なかった。文書ツリーを多数回変更するときはDocument Fragmentを経由する (agenda)を読んで、文書ツリーを多数回変更するときは、どんな場合でもDocument Fragmentを使うべきだ、と思い込んでしまった方がいたとしたら申し訳ないことをしたし、配慮が足りていなかったと思う。
ただ勘違いしないで欲しいのは、私がpiro氏のスクリプト、というかその姿勢を受け入れがたいのはDocumentFragmentを使っていないからではない。まさに膨大なRange.insertNodeが文書ツリーに対して繰り返される
と書いたが、この一行があってこその批判だということは書いておくべきだろう。これを見て私は少しぎょっとした。
// @include *
http://piro.sakura.ne.jp/latest/2005/06/url_breaker_plus.user.jsより
検証可能な特定のウェブページに適用されるGreasemonkeyスクリプトを作成する際に、この折り返し機能を部品として利用するのなら分かる。実際私は自分で検証可能なwww.google.comの検索結果に対して利用していた(さすがに他のGreasemonekeyスクリプトとのバッティングまでは考慮に入れられなかったが)。しかし// @include *は乱暴すぎる。あらゆるウェブページであのスクリプトが適用されるGreasemonkeyスクリプトをインストールしてどうなるかを想像した瞬間、私なら公開を中止するか、もしくは部品化するだろう。
まあpiro氏を名指しする私もどうかしていたが、何かどうしても気にかかってしまう魅力のようなものが彼にはある。それゆえ昔「嫌い」だと宣言したこともあったが。 らしくないね。