我正在开发Chrome扩展程序。每次重新加载页面或打开新选项卡时都会调用我的脚本。我怎么做只加载扩展一次,即chrome启动时,并在浏览器关闭时将所有值重置为默认值。
我确实通过了stackoverflow中的大部分链接,但无法将其重点放在我的情况下。
的manifest.json
"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"]
在我的一个背景javascripts中,我正在触发一个事件:
example.js
var DOMContentLoaded_event = document.createEvent("Event");
DOMContentLoaded_event.initEvent("DOMContentLoaded", true, true);
window.document.dispatchEvent(DOMContentLoaded_event);
上面的代码是触发DONContent,这样用户每次启动Chrome浏览器时都无需点击扩展图片。
每次加载页面时都会调用触发器事件,无论是否重新加载 相同的页面或打开另一个选项卡,事件被调用。我知道我在这里缺少一些重要的东西。我确实在localStorage中设置了东西。没有工作(我的意思是,在刷新网页时调用该事件)。我确实尝试过“持久性”:真实的选择,但徒劳无功。
我能知道自己错过了什么吗?
尼基尔
答案 0 :(得分:1)
根据您的评论,您正在尝试为Chrome启动时注册一个监听器并加载您的扩展程序。您可以使用 chrome.runtime.onStartup
事件来实现此目的:
首次安装此扩展程序的配置文件启动时触发。启动隐身配置文件后,即使此扩展程序以“拆分”隐身模式运行,也不会触发此事件。
这很简单:
chrome.runtime.onStartup.addListener(function () {
/* Do some initialization */
});