Google chrome Chrome事件页面到底是如何工作的?

Google chrome Chrome事件页面到底是如何工作的?,google-chrome,google-chrome-extension,Google Chrome,Google Chrome Extension,发件人: Chrome会跟踪应用程序或扩展插件添加侦听器的事件。当它发送此类事件时,将加载事件页面。相反,如果应用程序或扩展程序通过调用RemovelListener删除事件的所有侦听器,Chrome将不再加载该事件的事件页面 由于侦听器本身仅存在于事件页面的上下文中,因此每次加载事件页面时必须使用addListener;仅在运行时执行此操作是不够的 所以我注册了一个只存在于事件页面上下文中的监听器,然后chrome在事件发生时加载事件页面?如果页面当前已卸载,因此侦听器未定义,它如何激发侦听器

发件人:

Chrome会跟踪应用程序或扩展插件添加侦听器的事件。当它发送此类事件时,将加载事件页面。相反,如果应用程序或扩展程序通过调用RemovelListener删除事件的所有侦听器,Chrome将不再加载该事件的事件页面

由于侦听器本身仅存在于事件页面的上下文中,因此每次加载事件页面时必须使用addListener;仅在运行时执行此操作是不够的


所以我注册了一个只存在于事件页面上下文中的监听器,然后chrome在事件发生时加载事件页面?如果页面当前已卸载,因此侦听器未定义,它如何激发侦听器?最重要的是,我如何真正实现一个事件页面?

长期困扰我的答案是,监听器被Chrome“缓存”,这基本上意味着它的定义仍然是正常的。“仅在事件页面的上下文中”只意味着页面每次运行时都必须对其进行定义,第一次将在
运行时进行。onInstalled

要实现事件页面,请在清单的后台部分进行如下设置:

"background": {
    "scripts": [
        ...
        "/scripts/background.js"
    ],
    "persistent": false
},
“persistent”:false
使其成为事件页面

在background.js中,您将添加侦听器和函数,如下所示:

// event: display or focus options page
function onIconClicked() {
    bgUtils.showOptionsTab();
}

// event: process the state when someone has changed the storage
function onStorageChanged(event) {
    bgUtils.processState(event.key);
}

// listen for click on the icon
chrome.browserAction.onClicked.addListener(onIconClicked);

// listen for changes to the stored data
addEventListener('storage', onStorageChanged, false);
铬合金自动处理其余部分

有两点需要注意:

如果需要访问后台页面,请不要使用
chrome.extension.getBackgroundPage()
。改用
chrome.runtime.getBackgroundPage()
。它是异步的,确保事件页面被加载

事件页面中不能有全局变量。如果需要保持全局状态,则需要使用一个存储API