HTMLDocument の動的な作成 : createDocument メソッド編 ver 2
function createHTMLDocument_createDocument(source) { var doc = document.implementation.createDocument(null, 'html', null); var range = doc.createRange(); range.selectNodeContents(doc.documentElement); var content = range.createContextualFragment(source); doc.documentElement.appendChild(content); return doc; }
http://nanto.asablo.jp/blog/2009/10/29/4660197#htmldoc-createdoc-doctype-ns ではdocument.createRangeを使ってるけど、これは旧AutoPagerizeのコードから少しずつ書き換えていったからであり、この場合ならdoc.createRangeを使えばdocumentへの依存がなくなるはず。
http://twitter.com/nanto_vi/status/8267714063
document.documentElement も doc.documentElement にできるですか?
http://twitter.com/taizooo/status/8269015221
できます。で、adoptNodeもいらなくなります。
http://twitter.com/nanto_vi/status/8271661783
var content = range.createContextualFragment(source); ってことっすか? 全部 doc の下でやるってことかー
http://twitter.com/taizooo/status/8273601237
そういうことです。しかしよく考えたら、これをやるとFirefox 3以下では(docがXML文書なので)HTMLとしてパースできなくなるという欠点が。
http://twitter.com/nanto_vi/statuses/8286489523