Chrome扩展:让一个扩展监听页面上的事件
Chrome extension: have an extension listen for an event on a page?
我为我的网站制作了一个chrome扩展,目前我有一个扩展每分钟检查数据库的更新。
是否可以让扩展侦听实际页面上的事件?
像这样的
this.trigger('sendUpdate', data) //this happened on the page
this.on(sendUpdate, function(){ //this is what the chrome extension listens for
//do stuff with data
})
您需要添加一个content_script。content_script可以完全访问DOM,并且可以绑定到页面上的所有事件
只需将其添加到menifest文件
"content_scripts":[{
"matches":["http://*/*","https://*/*"],
"js":"your injected script.js"
}]
你可以获得更多信息https://developer.chrome.com/docs/extensions/mv2/content_scripts/
从你的问题来看,你似乎要处理一个自定义事件,所以你的content_scrip js将类似于这个
document.addEventListener('yourEventName', function(e){
//send message to ext
var someInformation = {/*your msg here*/}
chrome.extension.sendMessage(someInformation, function(response) {
//callback
});
}, false);
后台页面应该监听消息。
chrome.extension.onMessage.addListener(function(myMessage, sender, sendResponse){
//do something that only the extension has privileges here
return true;
});
然后您可以从页面上的所有脚本触发事件。。。
var evt = document.createEvent('Event');
evt.initEvent('yourEventName', true, true);
var some_element = document;
some_element.dispatchEvent(evt);
对于2023年阅读本文的人来说,sendMessage
方法已移至chrome.runtime.sendMessage
。
请参阅清单v3(MV3)的文档:https://developer.chrome.com/docs/extensions/mv3/messaging/
相关文章:
- 如何在AngularJS中监听点击事件,而不是触摸事件
- BackboneJS-监听嵌套的模型更改
- 在Firefox restartless插件中,当一个新窗口打开时,我如何运行代码(监听窗口打开)
- 监听touchend有时会触发移动点击事件
- 使用ajax的Django jquery.如何让jquery监听id's生成的表单
- JQuery监听点击并使用点击元素发出警报's href
- jQuery有没有,或者有没有jQuery插件,内置了监听CSS3动画事件的功能(例如animationEnd)
- 如何让Google Maps API v3监听dragend事件并在投递时填充表单字段
- 如何在angular js中监听dom就绪事件
- Phonegap:监听页面并关闭InAppBrowser返回index.html的简单方法
- React鼠标事件在没有监听它们的组件上触发
- 监听发布到网站的广告的新网址
- 我应该使用什么模式在 Node/JavaScript 中制作监听机器人
- 如何在具体化 CSS 中监听<选择>更改事件
- 如何将誓言令牌推送到本地存储或本地会话并监听存储事件?(SoundCloud Php/JS 错误解决方法)
- 在 nsiWindowWatcher 或 nsiWindowMediator 上监听焦点/模糊?对于火狐扩展
- 有没有办法在 asp.net MVC 3 中使用 JavaScript、Jquery 监听事件
- Chrome / Firefox扩展-内容脚本不监听消息
- 监听Firefox扩展中变量的值变化
- Chrome扩展:让一个扩展监听页面上的事件