如何处理没有 id 的 iframe

Posted

技术标签:

【中文标题】如何处理没有 id 的 iframe【英文标题】:How to handle an iframe without an id 【发布时间】:2018-07-13 02:27:57 【问题描述】:

目前,我有一个网站,其中包含从另一个网站加载到我的网站的 iframe。加载的 iframed 站点需要单击一个按钮,该按钮的 id 名为“接受”。 (饼干)

当然用户不应该点击这个按钮两次,所以我想在我的页面加载后自动点击这个按钮。

问题:

从其他站点加载的iframe 没有ID 也没有NAME 标记。 如何在页面加载时单击此按钮?

我尝试过但不起作用的代码:

<script type="text/javascript">
    $(document).ready(function()
        $("#accept").click(); 
    );
</script>

我在互联网上读到可以在没有 ID 的情况下收听 iframe。但我不知道如何将其写入代码。

我整天都在用谷歌搜索。我找不到解决办法。

希望有人可以帮助我解决我遇到的问题。带有解释/文档的固定代码将为我做这件事。

最好的问候。

【问题讨论】:

你不能简单地用$('iframe')选择它并触发你的点击吗? $('iframe').contents().find('#accept').click()。如果您有多个 iframe,只需选择第 n 个 $('iframe').eq(n+1) @Zenoo 谢谢。我收到此错误:Uncaught DOMException: Failed to read the 'contentDocument' property from 'htmlIFrameElement': Blocked a frame with origin "http://..." from accessing a cross-origin frame.。这可以解决吗?或者这根本就不行? ***.com/questions/25098021/… 谢谢@TheAlpha。似乎我的想法行不通;-)。我将编辑我的问题。 【参考方案1】:

您可以收听 iframe 的 load 事件。我想您的 HTML 页面中只有一个 iframe,因此以下内容可以正常工作:

$(function() 
  $('iframe').load(function() 
    $('iframe').contents().find('#accept').click();
  );
);

请注意,您需要使用contents() 方法访问 iframe 的内容。

【讨论】:

【参考方案2】:

这不是一个真正的解决方案,但它是我的问题的答案: SecurityError: Blocked a frame with origin from accessing a cross-origin frame

您无法使用 Javascript 访问,这将是一个巨大的 安全漏洞,如果你能做到的话。对于同源策略浏览器 阻止脚本尝试访问具有不同来源的框架。

【讨论】:

以上是关于如何处理没有 id 的 iframe的主要内容,如果未能解决你的问题,请参考以下文章

Selenium 如何处理多层嵌套 iframe

如何处理小部件的谷歌登录

如何处理表或视图不存在异常?

Woocommerce如何处理订阅结算?

如何处理前端js跨域问题

JPA中,在调用persist()时,数据库自动增长的主键如何处理