如何使用JavaScript或JQuery访问框架或iframe的内容?

时间:2010-09-01 19:47:20

标签: javascript jquery html

我正在尝试

$(document).ready(function(){   
    var myIFrame = document.getElementById("myIframe");
        var content = myIFrame.contentWindow.document.body.innerHTML;
    alert(
        content
    );
})

但是我得到了拒绝访问权限错误,因为我在框架中加载的是Google。我甚至想做什么?该文档必须是外部文档(如Google)。我想循环遍历文档中的所有元素。我是JS和JQuery的新手,所以我可能会错过一个非常基本的东西。

3 个答案:

答案 0 :(得分:4)

您不能因为同源策略而在所有常见浏览器中实施 两个IFRAME页面的协议,主机,域和端口必须匹配(具有相同的来源)以允许javascript在它们之间进行通信。

如果您想在javascript中启用跨域通信,则需要与其他域进行一些合作。

现在,如果您计划阅读的内容不如google.com那么雄心勃勃,而其他域名已准备好与您沟通,那么这里有两种技巧:

  1. 对于现代浏览器,您可以使用parent.postMessage中的IFRAME并在主页面中有一个监听器来接收字符串消息。
  2. 对于较旧的浏览器,您可以使用诸如通过windows.namewindow.location.hash传递字符串数据等技巧。但是使用这些技巧,您必须使用setInterval进行轮询以检查更改。 / LI>

答案 1 :(得分:2)

不,这称为跨站点脚本(XSS),并且因安全性而被禁用。

答案 2 :(得分:1)

尝试这样做:

$(document).ready(function(){
    iframe = $('#myIframe');
    alert($(iframe).contents());
});