Chrome Расширение фонового скрипта не запускается при публикации - PullRequest
0 голосов
/ 01 мая 2020

Я работаю над расширением chrome уже некоторое время.

У меня есть фоновый JS файл, который не является постоянным. При локальном тестировании расширения файл background. js правильно печатал результаты на консоль и запускал при необходимости.

Однако после загрузки создается впечатление, что фон. js больше не выполняется, когда он должен, и ничего не печатает на консоль.

Вот фон. js код:

chrome.runtime.onInstalled.addListener(function() {
 chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab){ // listener for when first loading the page
   var url = tab.url;
   console.log(url);
   if(url != undefined && changeInfo.status == "complete"){ // if the page is done loading, this is done bc .onUpdated has issues with multiple misfires
     console.log(url);
     var sites = [];
     chrome.storage.sync.get({list:[]}, function(data){ // retrieve list of blackListed sites
      sites = data.list;
      console.log(sites);
     for(var i = 0; i < sites.length; i++){
      if(tab.url.includes(sites[i])){
        chrome.storage.sync.get(['time'], function(data){
          if(data.time != null){ // if we are in an active session
          chrome.storage.sync.get(['userCausedHours'], function(data2) {
              console.log(data2.userCausedHours)
              chrome.storage.sync.set({'userCausedHours': data2.userCausedHours + 1}, function() {
                  console.log('hours = ' + data2.userCausedHours + 1) ;
                })
            });
          }
          })
        }
      }
   })
}
});
  chrome.tabs.onActivated.addListener(function(activeInfo) { // listener for when flipping back and forth between pages
    var sites = [];
        chrome.storage.sync.get({list:[]}, function(data){ // retrieve list of blackListed sites
              sites = data.list;
              console.log(sites);
  // how to fetch tab url using activeInfo.tabid
  chrome.tabs.get(activeInfo.tabId, function(tab){
      console.log(tab.url);
      for(var i = 0; i < sites.length; i++){
        if(tab.url.includes(sites[i])){
          chrome.storage.sync.get(['time'], function(data){
            if(data.time != null){ // if we are in an active session
            chrome.storage.sync.get(['userCausedHours'], function(data2) {
                console.log(data2.userCausedHours)
                chrome.storage.sync.set({'userCausedHours': data2.userCausedHours + 1}, function() {
                    console.log('hours = ' + data2.userCausedHours + 1) ;
                  })
              });
            }
            })
        }
      }
  });
  })
  }); 
  });
    

и вот мой манифест:

{
    "name": "Serenity",
    "version": "1.01",
    "description": "Productivity made fun",
    "permissions" :["tabs","storage"],
    "background" :{
        "scripts": ["background.js"],
        "persistent": false

    },
    "options_page": "options.html",
    "browser_action": {
      "default_popup": "popup.html",
      "default_icon": {
          "16": "images2/favicon-16x16.png",
          "32": "images2/favicon-32x32.png",
          "128": "images2/favicon-128.png"
        }

  },
    "icons": {
      "16": "images2/favicon-16x16.png",
      "32": "images2/favicon-32x32.png",
      "128": "images2/favicon-128.png"
      },
    "manifest_version": 2
  }

1 Ответ

0 голосов
/ 01 мая 2020

Как указано в комментариях, проблема заключалась в том, что я оставил .onInstalled вокруг двух слушателей для вкладок. Перемещение этих слушателей в глобальный контекст решило проблему, .onInstalled не требуется для моего расширения

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...