在<iframe>中解析网站的HTML标记

时间:2016-03-16 21:40:09

标签: javascript

是否可以解析iframe中显示的html网页中的标签?我试图编译代码如下,但它不起作用。

&#xA;&#xA;
 &lt;!DOCTYPE html&gt;&#xA; &LT; HTML&GT;&#XA; &LT;身体GT;&#XA;&#XA; &lt; iframe id =“Frame”src =“Url”&gt;&lt; / iframe&gt;&#xA;&#xA; &lt; button onclick =“myFunction()”&gt;解析它&lt; / button&gt;&#xA;&#xA; &lt; p id =“demo”&gt;&lt; / p&gt;&#xA;&#xA; &LT;脚本&GT;&#XA; function myFunction(){&#xA; var x = document.getElementById(“Frame”)。src.getElementByTagName(“title”);&#xA; document.getElementById(“demo”)。innerHTML = x;&#xA; }&#XA; &LT; /脚本&GT;&#XA;&#XA; &LT; /体&GT;&#XA; &LT; / HTML&GT;&#XA;  
&#XA;

1 个答案:

答案 0 :(得分:3)

您可以执行以下操作。只需记住将iframe的src更改为您实际加载的页面的URL:

<!DOCTYPE html>
<html>
<body>


<iframe id="Frame" src="sample.html"></iframe>

<button onclick="myFunction()">Parse it</button>

<p id="demo"></p>

<script>

function myFunction() {

var x;         

//get the iframe object
var iframe = document.getElementById('Frame');

//cross browser solution to get the iframe document
//of the iframe
var iframeDocument = iframe.contentDocument || iframe.contentWindow.document;

     //if the document is not undefined
     if (iframeDocument) {

       //do something with the frames dom

       //get the content of the title tag from the iframe
       x = iframeDocument.getElementsByTagName("title")[0].innerHTML;

        }    

              document.getElementById("demo").innerHTML = x;    

}

</script>

</body>
</html>

注意:此解决方案不适用于不允许在iframe中加载原始广告的网站。如果您要将网址http://www.google.com添加到iframe的src中,例如它会在开发者控制台中显示以下错误。

Load denied by X-Frame-Options: https://www.google.com/?gws_rd=ssl does not permit cross-origin framing.

出于同样的原因,这是您可能收到的另一个错误。我通过自己的网站(bytewarestudios.com)尝试了这个错误。

Error: Permission denied to access property "document"