“在扩展程序的生命周期中存在一个持久的后台页面,并且只有一个实例在Chrome浏览器的后台主动运行,以等待用户与扩展程序进行交互”
我有一种预感,我误解了这是什么意思;我目前正在编写一个在background.js中使用计时器的扩展程序,但是该计时器不会在不同的(INDEPENDENT)chrome窗口中持续存在。如果我有一个计时器在一个窗口上打开另一个窗口,则我在两个窗口上的扩展程序将具有相同的计时器进度-但是,如果我关闭所有Chrome窗口并打开一个新的窗口,则计时器将在00:00重新启动。我希望我的计时器在所有和所有Chrome窗口中都保持不变:后台脚本实际上不能这样工作吗?
这是我的代码,以防万一我犯了编程错误:
manifest.json
{
"manifest_version": 2,
"name": "Drill Sergeant",
"description": "Tracks time spent on 'watchlist' websites",
"version": "1.0.0",
"browser_action": {
"default_popup": "popup.html"
},
"background": {"scripts": ["background.js"]},
"web_accessible_resources": ["background.js"],
"permissions": ["activeTab", "webNavigation", "notifications", "tabs"]
}
background.js
chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab)
{
var timer = setInterval(countDown, 1000);
});
var timeCount =
{
duration:timeOut,
text: "OK"
}
function countDown()
{
timeCount.duration--;
chrome.runtime.sendMessage(timeCount);
}
popup.js
chrome.runtime.onMessage.addListener(
function(request, sender, sendResponse) {
var min, sec;
var minStr, secStr;
min = Math.floor(request.duration/60);
sec = request.duration % 60;
document.getElementById("timer").innerHTML = minStr + ":" + secStr;
);