【问题标题】:Chrome extension: have an extension listen for an event on a page?Chrome 扩展程序:让扩展程序监听页面上的事件?
【发布时间】:2013-01-26 17:08:17
【问题描述】:

我有一个正在为我的网站制作的 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
})

【问题讨论】:

    标签: javascript google-chrome-extension


    【解决方案1】:

    您需要添加一个 content_script。 content_script 拥有对 DOM 的完全访问权限,您可以绑定到页面上的所有事件

    只需将其添加到清单文件中

    "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);
    

    【讨论】:

    • 你有一个关于如何从内容脚本监听事件的例子
    最近更新 更多