将事件发送到不同域上的 iFrame?

Posted

技术标签:

【中文标题】将事件发送到不同域上的 iFrame?【英文标题】:Sending events to an iFrame on a different domain? 【发布时间】:2013-12-01 22:00:18 【问题描述】:

我遇到了一个问题,即我无法访问 iFrame 上的 contentDocument,因为它位于不同的域中,但我需要找到某种方法将触摸事件发送到 UIWebView 中此 iFrame 中的元素。

基本上用户可以访问像this one 这样的页面,并且由于用户无法手动点击这些页面(UIWebView 在第二个屏幕上使用 AirPlay 镜像)我需要能够发送 click/touchstart/touchend 等事件到用户正在访问的任何页面上的元素。

有没有办法用 javascript 做到这一点?如果没有,有没有办法以某种方式提取 UIWebView 中的 iFrame 来绕过这个限制?

【问题讨论】:

同源保护将阻止您使用 javascript 与不合作的单独域进行通信。 【参考方案1】:

您可以使用 postMessage API 执行此操作: https://developer.mozilla.org/en-US/docs/Web/API/Window.postMessage

您将不得不在两个窗口之间合并一个消息传递系统,处理事件以执行您想要的操作,您将没有 DOM 访问权限,但您应该能够通过触发每个窗口中的处理程序的事件来做到这一点。

【讨论】:

以上是关于将事件发送到不同域上的 iFrame?的主要内容,如果未能解决你的问题,请参考以下文章

如何将表单数据发送到同一网页中的 iframe src

如何从Angular向同一域上的Laravel API发送请求?

自动将一个域上的所有电子邮件地址转发到另一个域

发送数据并提交表单到不同的网站并获得结果

将表单数据从控制器发送到 AirConsole 上的屏幕

在同一域上的不同窗口之间进行通信[重复]