gpt4 book ai didi

javascript - 将事件监听器附加到与当前域不同的域

转载 作者:行者123 更新时间:2023-11-28 18:40:10 25 4
gpt4 key购买 nike

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

父域:www.exampledomain.com

子域名:www.someotherdomain.com

例如,我的父域是 www.exampledomain.com 在我的父域中,我有一个名为 capture 的按钮,单击此按钮时,我正在加载具有 URL www.someotherdomain.com 的子域。 在使用 JavaScript 的新选项卡中

除了在新选项卡中加载子域 URL 之外,我还尝试将事件监听器从父域附加到子域。

我试图找到捕获父域中子域中执行的所有点击操作。

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

这可能吗?任何指示都高度赞赏。

最佳答案

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

您可以做的是让两个页面进行合作(根据这样的理论,如果它们专门一起合作,那么从安全 Angular 来说一定是可以的)。但是,即使在合作情况下,您也不能让域 A 的页面将事件监听器添加到域 B 的页面中。您就是做不到。

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

关于您的具体问题:

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

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

关于javascript - 将事件监听器附加到与当前域不同的域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36244697/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com