将事件发送到不同域上的 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?的主要内容,如果未能解决你的问题,请参考以下文章