将事件侦听器附加到当前域

时间:2016-03-27 06:54:18

标签: javascript jquery html javascript-events cors

我正在开展一些项目,其中我有一个如下所述的场景

父域名:www.exampledomain.com

子域名:www.someotherdomain.com

例如我的父域名是 www.exampledomain.com 在我的父域名中我点击此按钮时有一个名为 capture 的按钮我正在使用javascript在新标签中加载子域名 www.someotherdomain.com

在新标签页中加载子域名网址时,我试图将eventlisteners从父域名附加到子域名。

我正在尝试捕获在父域中的子域中执行的捕获所有单击操作。

我知道CORS,但我想用javascript实现这个目标

有可能吗?任何指针高度赞赏

先谢谢

1 个答案:

答案 0 :(得分:3)

浏览器不允许您以任何方式直接访问包含来自其他域的页面的浏览器窗口(出于安全原因)。因此,您无法直接将事件侦听器添加到任何域的页面。

你被允许做的是有两页合作(根据理论,如果他们特别合作,那么它必须是安全的)。但是,即使在合作的情况下,您也无法将具有域A的页面添加到具有域B的页面中的事件侦听器。您无法做到。

您可以使用window.postMessage()将某种命令发送到另一个窗口,然后另一个窗口随后执行DOM操作。您可以发送window.postMessage()从其他窗口请求某些信息,然后另一个窗口将有一个监听器来处理您的特定请求,将获取该信息并将数据发回。这种结构显然需要两个完全合作的页面。出于安全原因,您可以(并且应该)限制您愿意接受消息的域。有关详细信息,请参阅MDN doc for window.postMessage()

关于你的具体问题:

  

我正在尝试捕获捕获在子项中执行的所有单击操作   父域中的域。

您无法从父域执行此操作。您可以从父域向子域发送消息,要求子域自行设置请求的点击处理程序,然后每次点击发生时window.postMessage()数据。大多数工作必须使用自己的代码在子窗口内完成。