id:amachangのこの記事を見て
このコードを実行すれば Mozilla 系のブラウザでも outerHTML が使えるようになります。
Firefox に outerHTML を実装する - IT戦記![]()
cloneNode(true)するとちょっと重いかもな〜と思って、少しいじってみる。
cloneNode(false)にしてみた
(function(work,reg_inspnt){ if (document.documentElement.outerHTML) return; HTMLElement.prototype.__defineGetter__('outerHTML',function(){ work.appendChild(this.cloneNode(false)); var html=work.innerHTML.replace(reg_inspnt,'$1'+this.innerHTML+'<'); while (work.firstChild) delete work.removeChild(work.firstChild); return html; }); })(document.createElement('div'),/(>[^<]*)</);
どこか問題有る気もするが(汗)
ふたつの速度比較
適当なページをFirefoxで開いた状態で、
javascript:(function(d){var%20s=d.createElement('script');s.charset='UTF-8';s.src='http://furyu-tei.sakura.ne.jp/script/benchmark_outerHTML.js?ver=';+(new%20Date).getTime();d.documentElement.appendChild(s);})(document)
を実行すれば、速度比較が出来ます。
(1)がamachangさんの方式、(2)が上記方式の結果。
ベンチマークの内容は、ページ内の全要素について、outerHTMLを参照しています。
この記事のページで(試した時点で487要素)、(1) 401 ms vs (2) 95 ms でした。揺れは大きいけれども。