在我的 chrome 扩展中只执行一次后台脚本

nik*_*hil 1 google-chrome-extension

我正在开发一个 chrome 扩展。每次我重新加载页面或打开新标签时都会调用我的脚本。我是如何让它只加载一次扩展程序的,即当 chrome 启动并在浏览器关闭时将所有值重置为默认值。

我确实浏览了 stackoverflow 中的大部分可用链接,但无法将其集中到我的情况。

清单文件

"background":{
"scripts":["common.js","example.js"],
"persistent":true
},
"content_scripts": [
{
"matches": ["<all_urls>"],
"js": ["myscript.js"]
}
],
"content_security_policy": "script-src 'self' 'unsafe-eval'; object-src 'self'",
"permissions": ["http://*/*",
"https://*/*",
"contextMenus",
"tabs"]
Run Code Online (Sandbox Code Playgroud)

在我的一个后台 javascripts 中,我正在触发一个事件:

例子.js

var DOMContentLoaded_event = document.createEvent("Event");
DOMContentLoaded_event.initEvent("DOMContentLoaded", true, true);
window.document.dispatchEvent(DOMContentLoaded_event);
Run Code Online (Sandbox Code Playgroud)

上面的代码是为了触发DONContent,这样用户就不用每次启动Chrome浏览器都点击扩展图片了。

每次我的页面加载时都会调用触发事件,无论是重新加载同一页面还是打开另一个选项卡,都会调用该事件。我知道我在这里遗漏了一些重要的东西。我确实在 localStorage 中设置了一些东西。没有用(我的意思是,该事件在刷新网页时被调用)。我确实尝试了 "persistent": true 选项,但徒劳无功。

我能知道我错过了什么吗?

尼基尔

gka*_*pak 5

根据您的评论,您正在尝试为 Chrome 启动和加载扩展程序时注册一个监听器。您可以通过chrome.runtime.onStartup事件实现这一目标:

当安装了此扩展的配置文件首次启动时触发。启动隐身配置文件时,不会触发此事件,即使此扩展程序在“拆分”隐身模式下运行。

它很简单:

chrome.runtime.onStartup.addListener(function () {
    /* Do some initialization */
});
Run Code Online (Sandbox Code Playgroud)