2013-02-05

iPhone で Safari のソースコードを表示させる Bookmarklet

iPhone の Safari で、時々、今見ているページのソースコードが見たくなることがある。で検索してみると、いろんな人がブックマークレット (ブックマーク) を作ってた。一つリンクを張っておく。

せっかくなので、どういうソースコードなのか見てみる。

d=document;
c=d.charset%7C%7C0;
i=0;
o=d.documentElement;
d.write(%22%3Cpre%3E%22+(o.outerHTML%7C%7Co.innerHTML).replace(/&/g,%22&%22).replace(/%3C/g,%22<%22).replace(/%3E/g,%22>%22)+%22%3C/pre%3E%22);
c?d.charset=c:0;
void(document.close());

%XX 表記が読み難い。デコード! (ref. JavaScript escape vs encodeURI: lower ASCII)

d=document;
c=d.charset||0;
i=0;
o=d.documentElement;
d.write("<pre>"
          +(o.outerHTML||o.innerHTML).replace(/&/g,"&amp;")
                                     .replace(/</g,"&lt;")
                                     .replace(/>/g,"&gt;")
          +"</pre>");
c?d.charset=c:0;
void(document.close());

読みやすくなった。

変数 o に全てのドキュメント要素を入れて、それを pre 要素の中に書き出し直すようにしているわけね。その際、&, <, > といったタグの部品を読めるように置換する、と。なるほどねぇ。勉強になった。

No comments:

Post a Comment