2012-07-24 54 views
2

我有以下頁面編碼:如何找到Iframe頁面的渲染內容?

的mypage.html:

<html><script>var a=document.createElement('p'); 
    a.innerHTML="hello world"; 
    document.body.appendChild(a);​​​​​​​​​​​</script> 
    ​​​​​​​​​​​​​​​​​​​​​​<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);​​​​​​​​​​​</script> 
    ​​​​​​​​​​​​​​​​​​​​​​<body> 
    <p>testing 1 2 3....</p></body> 
    </html>​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​ 

這不是我所期待的。我希望得到內容如下已經呈現在瀏覽器中,我需要得到所有的渲染和生成的唯一檢驗動態的源代碼,我怎麼能代碼來獲取呈現的HTML源代碼:

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

回答

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.'); 
} 
+0

我給ID和屬性: 'IFRAME .setAttribute('id','iframer');' – user1541283 2012-07-24 04:07:32

+0

你的第一個代碼在Chrome中完全不起作用。 'Uncaught TypeError:無法讀取未定義的屬性'文檔'而第二個代碼在Chrome中也不起作用。'無類型錯誤:無法讀取未定義的屬性'nodeName'呃,我只需要呈現代碼,我不需要真的需要JavaScript函數的實際源代碼。我需要的只是所有呈現的代碼以供檢查。 – user1541283 2012-07-24 04:10:59

+0

@ user1541283編輯答案。現在試試。 – 2012-07-24 13:13:19

0

你爲什麼不使用XML序列化是這樣的:

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

內容變量包含iframe的內容,包括<!DOCTYPE html><HTML><head>