7

完全な DOM スタックを文字列として取得したい。例として、Chrome を開き、F12 を押して「document.all」と入力してください。このオブジェクトは完全な DOM を表します。このオブジェクトを文字列として変換したい。Chrome では、オブジェクトを調べたり、セクションを展開したり、Web デバッガー コンソールでそのコンテンツを表示したりできます。document.all を文字列として変換する可能性はありますか? または、同様のソリューションで完全な DOM スタックを取得できますか? innerHTML/outerHTML だけではなく、現在の DOM で定義されている文字通りすべてのコンテンツが必要です。何か案は?前もって感謝します...

編集:わかりました、私の質問はちょっと混乱していると思います。申し訳ありません。これを明確にするために: 「document.location」、「document.location.hash」、「window.innerHeight」、「document.body.innerHTML」など、定義されているすべてのオブジェクトすべてのプロパティを取得したいオン、JavaScript を使用。

4

2 に答える 2

7

私の知る限り、すべてのオブジェクトのすべてのプロパティを取得する方法はありません。

少なくとも一部のブラウザー (Chrome など) では、ほとんどのDOMouterHTMLon documentElement(ルート要素、たとえばhtml)で取得できます。

var html = document.documentElement.outerHTML;

他のターゲット ブラウザが対応しているかどうかを確認する必要があります。少なくとも、次のものが必要innerHTMLですbody

var bodyHTML = document.body.innerHTML;

しかし、他のことに関しては、すべてのオブジェクトのすべてのプロパティを取得する方法はないと思います。たとえば、次のwindowようにプロパティを見つけることができます。

var key;
for (key in window) {
    // ...'key' is the property name, window[key] is the value...
}

...しかし、それは列挙可能なプロパティのみを提供し、列挙不可能なものは提供しません。そしてもちろん、オブジェクトのプロパティを取得するにはオブジェクトに再帰する必要がwindow === window.windowあります (たとえば、複数の方法でオブジェクトにアクセスできるという事実を考慮に入れる必要があります。 、、...) 。topselfdocument.alldocument.forms

残念ながら、あなたが話している多くの情報を得ることができますが、すべてを得ることができるとは思いません.

于 2013-06-14T12:50:27.780 に答える
0

を使用してこれを自分で実装できますObject.getOwnPropertyNames。これには、列挙不可能なプロパティも含まれます。これがどのように行われるかを示す小さな例を作成しました。

于 2013-06-14T16:20:25.917 に答える