0

ブラウザの機能view-sourceを使用して HTML コードを Javascript 文字列に変換することは可能ですか?

view-source:http://www.google.com

私はこのようなコードを試していますが、ドキュメントが定義されていないというエラーが発生します:

document.getElementsByTagName('html')[0].innerHTML;

なんらかのハックを使用しない限り、クロスドメイン リクエストが不可能であることはわかっていますが、コードを取得するのは非常に困難ですが、これははるかに簡単に見えます。画像や CSS の読み込みを防ぐために Web サイトにアクセスしたくありません。

4

3 に答える 3

0

これは、Firefox で行う 1 つの方法です。他のどこでも機能しません。簡単にするために、alert() と同期 "ajax" を使用しましたが、任意の ajax ライブラリでは、非同期バージョンは簡単です。

主なことは、行番号、HTML エラー、および属性やコンテンツなどの HTML セクションのセマンティック ラッパーへのマークアップを示す、Firefox の素敵なビュー ソース HTML を取り戻すことです。インターネットに接続せずにブラウザー内でhtmlを検証することを私が知っている唯一の方法です...

// sync url fetcher function:
function IO(a){var b=new XMLHttpRequest;b.open("GET",a,!1);b.send();return b.responseText}

// create a new iframe to show the source code:
var fr=document.createElement("iframe");

// when it loads, let's view it using a simple alert()
fr.onload=function(){
  alert(win.document.documentElement.outerHTML);
  document.body.removeChild(fr);
};

// now add the frame into the document:
document.body.appendChild(fr);

// now assign the view-source url to the frame to trigger it's onload()
url= "/"; //just use site's home page for this demo
fr.src="view-source:data:text/html,"+escape( IO( url ) );

ああ、もちろん、これはあなたのドメインのURLまたはcorsで設定されたURLに対してのみ機能します。

于 2013-09-24T20:59:38.477 に答える
0

Works in Chrome and Firefox. Safari assumed. IE untested.

document.querySelector('html').innerHTML

*Edit I think your error is coming from somewhere else. That statement, while clumsy, is perfectly valid.

If you're getting errors about document not being defined, then you're executing this before the document object is ready (are you waiting for DOMREADY or load?) or its executing outside a DOM interface (web worker?).

于 2013-09-24T21:07:40.473 に答える