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

时间:2014-01-13 11:47:39

标签: google-chrome-extension

我正在开发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中设置了东西。没有工作(我的意思是,在刷新网页时调用该事件)。我确实尝试过“持久性”:真实的选择,但徒劳无功。

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

尼基尔

1 个答案:

答案 0 :(得分:1)

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

  

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

这很简单:

chrome.runtime.onStartup.addListener(function () {
    /* Do some initialization */
});