gpt4 book ai didi

javascript - 如何从 Google Chrome 扩展程序访问网页的事件监听器

转载 作者:行者123 更新时间:2023-11-28 12:49:26 28 4
gpt4 key购买 nike

我正在编写一个 Chrome 扩展程序,以列出附加到 <a/> 的每个事件处理程序的源代码。当您将鼠标悬停在其上方时标记。

目前,我已经打印出了 href 属性 - $(this).attr("href") - 这很好用。源代码在github上:http://github.com/grantyb/Google-Chrome-Link-URL-Extension .

当我扩展它来访问事件处理程序时,$(this).data("events") 返回空值。我确信有一个 click()我的处理程序<a/>标签,因为当我输出$("a").data("events")时在我的网页中,它正确列出了处理程序。

看来 jQuery 的 data()方法正在检查沙盒中的数据,因此我无法从扩展内部访问它。这是有道理的,因为我猜它存储在 jQuery 中全局变量,这显然与 jQuery 不同。位于我的扩展内的全局。

是否有另一种方法可以访问 DOM 中对象的事件处理程序列表。事件处理程序是否存储在 DOM 中?

最佳答案

通过出色的破解解决了!

查看 GitHub 上的代码了解详细信息:http://github.com/grantyb/Google-Chrome-Link-URL-Extension .

内容脚本使用 jQuery 附加 <script>直接标记到主页(在此处插入疯狂的笑声)。 “寄生虫”脚本对主机页面具有完全可见性,包括 DOM 和 javascript 沙箱,因为它现在是页面的一部分。它获取我需要的数据,将其编码为文本格式,并将其写入我之前准备的元素的属性中。

然后,我坐下来等待 (setTimeout(...,10)) 脚本完成其任务。当我接到回电时,我会自行清理并直接从 DOM 元素中获取文本编码数据。

有没有更简单的方法?这感觉很顽皮。

关于javascript - 如何从 Google Chrome 扩展程序访问网页的事件监听器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3227184/

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