« 納豆が買えないんですけど | メイン | メガマック食べれない »

Javascript で書き換えられた後の Webページの内容を表示する

あとで読む

Javascript で書き換えられた後の Webページの内容を表示するブックマークレット(bookmarklet)

ソース表示

Javascript で書き換えられたページの内容を確認する方法として、

などが紹介されているが、document.body.innerHTML だと body限定の表示になるし、outerHTML は FIrefoxでは機能しない(参考 Hatena::Group::Perl - perl 覚え書き日記 - [JavaScript]innerHTMLとか(IEとFireFoxの差異)。「選択した部分のソースを表示」は狭い範囲だと手軽でいいのだが、複雑なページだと処理が重いようだ。

というわけで、document.documentElement.innerHTML を表示するのが クロスブラウザ的にもよいんではないかと。ポップアップブロックされていると動かないけど、こんなかんじ↓。

var w=window.open('');
if (w) {
    var d=w.document;
    d.write('<xmp>'+document.documentElement.innerHTML+'</xmp>');
    d.close();
}

<xmp>(<plaintext>も)は W3C の仕様では廃止されている(参考:Obsolete Elements of HTML)のだが、IE, Firefox, Safari でまだサポートされているので実用上はよしとする(してください)。上記コードは IE6, Firefox2, Safari で動作確認した。

ということで、見ているページの現在のソースを確認する Bookmarklet

ソース表示

yoski さんから、document.lastChild.innerHTML でもソースが取得できる、と教えてもらいました。document.lastChild.nodeName は HTML なので、取得できるわけだが、なんで document の lastChildが HTML なんだろう。(2007/1/22追記)と思ってたら、IT戦記 - [JavaScript] とてもシンプルに自分自身が属する script 要素を取得 を見つけた。boolmarklet から documetn.lastChild を呼び出すということは、<html> がいままさに作られた直後に呼び出しているわけだから、lastChild = [object HTMLHtmlElement] なのね。

あと、ぶさいくだけど、document.getElementsByTagName('html')[0].innerHTML コードでも取得できるね。

Trackbacks

Trackback URL:
http://groundwalker.com/mt/gwtb.cgi/85

Comments (2)

yoski:

ちなみにこれも動いたり(一緒だけど)

obj.document.lastChild.innerHTML;

あ、どうも。追記しました。

« 納豆が買えないんですけど | メイン | メガマック食べれない »

スポンサー

関連ブログ

あわせて読みたい

関連キーワード

Powered by
Movable Type 3.34

連絡先