后台脚本不会在扩展程序的生命周期内持续存在

时间:2019-05-25 17:02:53

标签: javascript google-chrome-extension

从此来源(https://medium.com/@vanessajimenez_85032/chrome-extensions-content-scripts-vs-background-scripts-7bbd01f9dbe6):

“在扩展程序的生命周期中存在一个持久的后台页面,并且只有一个实例在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;

);

0 个答案:

没有答案