使用JavaScript获取IFrame innerHTML

MUS*_*MUS 4 javascript iframe innerhtml

我正在尝试使用下面的代码获取IFrame内部HTML.

 <iframe src="http://www.msn.com" 
         width="100%" height="100%" marginwidth="0"
         scrolling="no" frameborder="0" id="divInfo" 
         onreadystatechange="MyFunction(this);"></iframe>   
Run Code Online (Sandbox Code Playgroud)

JavaScript代码是

  function MyFunction(frameObj)
    {
        if (frameObj.readyState == "complete")
        {
            alert(frameObj.document.body.innerHTML); 
        }
    }
Run Code Online (Sandbox Code Playgroud)

但是警报显示了当前文档的html.当frmae就绪状态完成时,如何获得iframe的内部HTML.

如果我使用alert(frameObj.contentWindow.document.body.innerHTML);它给我访问被拒绝错误.

提前致谢.

Das*_*shK 6

拒绝访问错误是由相同的原始策略引起的.

由于您的页面托管在http://www.example.com/(例如),如果您尝试访问http://www.msn.com/上的详细信息,浏览器将不会让您,因为它们来自2个不同的域名.

但是,如果您尝试访问同一域中的数据 - 托管页面:http://www.example.com/index.html,IFrame页面:http://www.example.com/iframe.html,那么您应该能够获得内容.

有关同源策略的更多信息,请访问以下链接:http://en.wikipedia.org/wiki/Same_origin_policy

顺便说一句,您可能希望使用frameObject.contentDocument

<script type="text/javascript">
function documentIsReady(frameObject) {
  alert(frameObject.contentDocument.body.innerHTML);
}
</script>
Run Code Online (Sandbox Code Playgroud)

...而且您也可以使用onload而不是onreadystatechange ...

<iframe src="iframe.html" onload="documentIsReady(this);"></iframe>
Run Code Online (Sandbox Code Playgroud)