如何处理没有 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的主要内容,如果未能解决你的问题,请参考以下文章