chrome扩展仅在后台页面活动时运行

时间:2018-05-25 22:19:31

标签: javascript google-chrome google-chrome-extension

现在我的扩展程序应该跟踪用户最常访问的网站。但是,它似乎只在我的后台页面处于活动状态时起作用。例如,如果我打开我的后台控制台或者如果我使它持久化,那么它将毫无障碍地运行。但是,如果我的后台控制台已关闭或持久性设置为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分钟。

我不确定该怎么做。我似乎无法弄清楚出了什么问题。

0 个答案:

没有答案