素人がプログラミングを勉強していたブログ

プログラミング、セキュリティ、英語、Webなどのブログ since 2008

連絡先: すかいぷ:javascripter_  か javascripter あっと tsukkun.net skypeのほうがいいです

outerHTMLを作ってドキュメント全体のソースを取得する

FirefoxにはinnerHTMLはあってもouterHTMLがない。
でも、__define[SG]etter__とかを使えば再現できる。

HTMLElement.prototype.__defineGetter__('outerHTML',
		function(){
		var tmp=document.createElement('div');
		tmp.appendChild(this.cloneNode(true));
		return tmp.innerHTML;
		});
HTMLElement.prototype.__defineSetter__('outerHTML',
		function(str){
		var tmp=document.createElement('div');
		tmp.innerHTML=str;
		this.parentNode.replaceChild(tmp,this);
		});

console.log(document.documentElement.outerHTML);

こうすればいい。
単にelement.parentNode.innerHTMLで取得すると、ドキュメントのルートのouterHTMLを取得できなくなるから、いったんコピーしてから取得する。