在 Chrome 扩展中访问自定义页面回调
我正在尝试编写一个 chrome 扩展,它将向页面添加事件处理程序。问题是事件不是标准的,并且是由页面上运行的外部 javascript (jquery) 触发的。使用内容脚本解决这个问题似乎是不可能的,因为它们在单独的环境中执行,并且只能访问页面的 DOM 而不能访问 JS。我在这里还有什么其他选择?
更新:
这里的问题是页面不知道内容脚本或整个扩展。示例:页面中的 JS 触发事件,例如文档上的“someCustomEvent”,并定义该事件的处理程序。因此,当页面加载时,在 JS 控制台内我可以执行以下操作:
$(document).data('events');
并将列出所有这些自定义事件。在内容脚本中执行相同的操作只会导致内容脚本定义的事件。
我正在寻找一种方法来捕获内容脚本中的所有自定义事件,或者如何在与页面 js 相同的环境中执行扩展的 js。
I am trying to write a chrome extension which would add event handlers to the page. The problem is that events are not standard and are triggered by the external javascript (jquery) running on the page. Solving this with content-scripts seems not possible since they are executing in a separate environment and can only access the DOM of the page but not the JS. What other options do I have here?
Update:
Problem here is that page is not aware of the content-script or the whole extension. Example: JS in a page triggers events, say 'someCustomEvent' on document and defines handlers for that event. So when the page is loaded, inside JS console I could do this:
$(document).data('events');
and will list all those custom defined events. Doing the same in the content-script results in only those events that content-script defines.
I am looking for a way to catch all those custom events in a content-script or how to execute extension's js in the same environment with the page js.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
对于内容脚本来说,捕获自定义事件不是问题(如果它是实际事件,而不是模拟事件)。事实上,自定义事件是内容脚本和页面之间通信的推荐方式。您可以在此处查看一些示例。
Catching custom events isn't a problem for content scripts (if it is an actual event, not simulation). In fact custom events is a recommended way of communicating between content scripts and a page. You can check out some examples here.