2012-07-24 53 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>