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

标签 javascript dom google-chrome-extension dom-events sandbox

我正在编写一个 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/

相关文章:

javascript - 将蓝牙与 Google Chrome 扩展程序结合使用

javascript - 在递归计算中为 Javascript Canvas 设置动画

javascript - 无法将音频转换为文本nodejs

javascript - 如果我们处于默认状态并且没有选择其他选项,则不执行任何操作。如果从其他选项回到默认状态,请执行某些操作

javascript - 使用 jQuery 根据 AJAX 结果修改 DOM

javascript - 抽象 chrome 打包应用程序文件系统以与 node-webkit 一起使用

javascript - 如何使用uploadifive提交动态变量

javascript - 具有多个字段和 "display"属性的 CSS 选择器

javascript - jQuery ajax 将事件附加到元素

javascript - 如何避免 Chrome 扩展中的 "fake"AJAX 请求