2

コード化された次のページがあります。

mypage.html:

    <html><script>var a=document.createElement('p');
    a.innerHTML="hello world";
    document.body.appendChild(a);​​​​​​​​​​​&lt;/script>
    ​​​​​​​​​​​​​​​​​​​​​​&lt;body>
    <p>testing 1 2 3....</p></body>
   </html>​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​

次のコードを持つfind.htmlで情報を取得すると。

<script>
window.onload =finder();
function finder(){
var iframe=document.createElement('iframe');
iframe.width=1;
iframe.height=1;
iframe.src='mypage.html';
iframe.setAttribute('id', 'iframer');
document.body.appendChild(iframe);
    setTimeout(
        function() { 
var e = document.getElementById("iframer");
var frameHTML = e.contentDocument; var serializer = new XMLSerializer(); var content = serializer.serializeToString(frameHTML); alert(content);
        } , 30000);
}
</script>

最終結果は、アラート ポップアップのように表示されます。

    <html><script>var a=document.createElement('p');
    a.innerHTML="hello world";
    document.body.appendChild(a);​​​​​​​​​​​&lt;/script>
    ​​​​​​​​​​​​​​​​​​​​​​&lt;body>
    <p>testing 1 2 3....</p></body>
   </html>​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​

それは私が探しているものではありません。ブラウザでレンダリングされた次のようなコンテンツを取得しようとしています。すべてのレンダリングおよび生成された動的ソース コードを検査用にのみ取得する必要があります。レンダリングされた HTML ソース コードを取得するにはどうすればよいですか。

   <body>
   <p>hello world</p>
   <p>testing 1 2 3....</p>
   </body> 
4

2 に答える 2

1

IFrame にid属性を指定します。

オブジェクトはcontentDocument実際にはブラウザによって異なります。また、セキュリティ上の理由から、同じドメインの IFrame のコンテンツのみを取得できます。

var IFrame_DOM;
var iframe = document.getElementById('iframer'); // The ID of the IFrame
if (iframe.contentDocument)
{
  IFrame_DOM = iframe.contentDocument; // Get DOM in Chrome / Gecko
}
else if (iframe.contentWindow)
{
  IFrame_DOM = iframe.contentWindow.document; // Internet Explorer
}
if (IFrame_DOM)
{
  // Successfully got the DOM
  // Use the DOM in code here
}
else
{
  alert('Unsupported Browser. Couldn\'t read DOM.');
}
于 2012-07-24T03:56:50.150 に答える
0

このように xml シリアライザーを使用しない理由:

var serializer = new XMLSerializer();
var content = serializer.serializeToString('yourIframeObject;);

<!DOCTYPE html>content 変数には、 、 <HTML>および を含む iframe コンテンツが含まれます。 <head>

于 2014-01-29T11:26:28.957 に答える