расширение chrome запускается только когда фоновая страница активна - PullRequest
0 голосов
/ 26 мая 2018

Прямо сейчас мое расширение просто должно отслеживать наиболее часто посещаемые сайты пользователя.Тем не менее, это только работает, когда моя фоновая страница активна.Например, если я открою фоновую консоль или сделаю ее постоянной, она будет работать без помех.Однако, если моя фоновая консоль закрыта или постоянная имеет значение false, она больше не будет обновлять время сайтов.

Вот мой фоновый скрипт:

chrome.runtime.onInstalled.addListener(function(){
    console.log("App Installed");
});

var web_list =[];

chrome.tabs.onUpdated.addListener(function(tabId, info, tab){


    if(info.status == 'loading'){
        logTime();
        var site = tab.url.match('^(([^:/?#]+):)?(//([^/?#]*))?')[4];

        web_list.push(site);
    }
});

chrome.tabs.onActivated.addListener(function(){
    logTime();

    chrome.tabs.query({active: true, currentWindow: true}, function(tabs){
        web_list.push(tabs[0].url.match('^(([^:/?#]+):)?(//([^/?#]*))?')[4]); 
//get url of site and then extract host name
    });


});

function logTime(){

    if (web_list.length > 0){
        var url = web_list[web_list.length - 1];

        chrome.storage.sync.get('time', function(data){
            var timeString = data.time;
            var time = new Date(timeString);
            var d = new Date();
            var mins = (d - time)/60000;


            chrome.storage.sync.get(url, function(data){
                var items = data[url];
                if(items){
                    items[0] = items[0] + mins;
                    items[0] = Math.round(items[0]*100)/100;
                    chrome.storage.sync.set({[url]: items});

                }

                else{
                    mins = Math.round(mins*100)/100;
                    items = [mins, false, false, 0, 0, 0];
                    chrome.storage.sync.set({[url]: items});

                }


            });
        });
    }

    var date = new Date();
    var dateString = String(date);
    chrome.storage.sync.set({'time': dateString});
}

Так, например, после распаковки моего расширения Chrome я захожу на www.reddit.com в другой вкладке.После перезагрузки reddit было бы сказано, что я был на сайте в течение 0,11 минуты или что-то еще в моем всплывающем окне.Однако, если я подожду минуту, после чего мой фоновый скрипт станет неактивным, а затем перезагрузит www.reddit.com, время в моем всплывающем окне обновляться не будет.Однако, если для параметра persistent задано значение true или фоновая консоль открыта, она работает отлично, и значение обновляется до 1,11 минуты.

Я не уверен, что делать.Я не могу понять, что не так.

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