jQuery / Javascript - 检查iframe中是否存在元素

时间:2012-04-12 17:08:40

标签: javascript jquery iframe

是否可以检查iframe中是否存在元素?我知道由于同源政策,不可能在外国主机上操纵某些东西。但是如果我只是想知道一个元素是否存在呢?

<body id="parent">
  <iframe src="foreign host">
    <span id="exist">
      Yes, Yes. I'am here.
    </span>
  </iframe>
</body>

我试图用jquery来解决这个问题:

$('iframe:first').contents().find('#exist').length throws out a 

拒绝访问属性'ownerDocument'错误的权限

我不想改变外国文件中的内容。所以没有危险。为什么会被拒绝?

还有其他办法吗?

2 个答案:

答案 0 :(得分:2)

很抱歉,但同源政策不允许这样做,因为您可以阅读其他域上的个人信息,或者只是嵌入完整的文档iframe进行网络钓鱼。

还有其他解决方案:

  • 在没有安全性的情况下运行浏览器:p.e。:'chromium-browser --disable-web-security'
  • 创建代理并像客户端一样进行http连接。将代理设置在与您的网页相同的域中。

如果它在同一个域中,任何其他评论都可以帮助您。

答案 1 :(得分:0)

您应该为iframe代码分配ID,如下所示:

<iframe src="blah.html" id="blah"></iframe>

然后您可以通过执行以下操作在jQuery中引用iframe:

var iframe = $("#blah");

完成后,您可以使用刚刚创建的iframe var上的contents()函数来访问其DOM。