将事件侦听器附加到与当前域不同的域

Attach event listeners to different domain from current domain

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

父域:www.exampledomain.com

子域:www.someotherdomain.com

例如我的父域是 www.exampledomain.com 在我的父域中我有一个名为 capture[=34= 的按钮] 单击此按钮后,我正在使用 javascript[ 在新选项卡中加载具有 URL www.someotherdomain.com 的子域=13=]

在新选项卡中加载子域 URL 的同时,我正在尝试将事件监听器从父域附加到子域。

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

我知道 CORS,但我想使用 JavaScript 来实现。

可能吗?非常感谢任何指点。

浏览器不会让您以任何方式直接访问包含来自其他域的页面的浏览器 windows(出于安全原因)。因此,您根本无法直接向任何域的页面添加事件侦听器。

你被允许做的是让两个页面合作(根据理论,如果他们专门合作,那么在安全方面肯定没问题)。但是,即使在合作的情况下,您也不能让域 A 的页面向域 B 的页面添加事件侦听器。您就是做不到。

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

关于您的具体问题:

I am trying to find capture all click actions performed in child domain in parent domain.

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