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

jQuery/Javascript - Check whether an element exists in an iframe

本文关键字:是否 存在 元素 iframe 检查 Javascript jQuery      更新时间:2023-09-26

是否可以检查 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 

访问属性"所有者文档"错误的权限被拒绝

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

有没有其他方法可以做到这一点?

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

有替代解决方案:

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

如果它位于同一域中,任何其他评论都可以为您提供帮助。

您应该为 iframe 标记分配一个 ID,如下所示:

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

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

var iframe = $("#blah");

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