1

是否可以检查元素是否存在于 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”错误的权限被拒绝

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

还有另一种方法可以做到这一点吗?

4

2 回答 2

2

抱歉,同源策略不允许这样做,因为您可以读取另一个域上的个人信息或进行网络钓鱼,只需嵌入完整的文档 iframe。

有替代解决方案:

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

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

于 2012-04-12T17:21:49.983 回答
0

您应该像这样为您的 iframe 标签分配一个 ID:

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

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

var iframe = $("#blah");

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

于 2012-04-12T17:17:26.890 回答