跟踪在特定网站上花费的时间:Chrome扩展程序

时间:2018-12-24 15:07:09

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

要求:进行 chrome扩展,以跟踪用户在个人资料页面上花费的时间。 (假设:Facebook的个人资料页面。)

文件:background.js(在这里,我们将附加侦听器并设置时间间隔。

这是我现在要使用的:(假设相关常量)

const urlRegex = new RegExp(/.+/); // pass everything for now

function updateActiveTabState() {
    // If idle, ignore
    chrome.idle.queryState(IDLE_TIME, state => {
        // User is active
        if (state === "active") {
            chrome.tabs.query({
                    active: true,
                    lastFocusedWindow: true
                },
                tabs => {
                    if (tabs.length === 0) return;

                    const tab = tabs[0];
                    const tabID = tab && tab.id;
                    const tabURL = tab && tab.url;

                    if (
                        tab &&
                        tabURL && ["loading", "complete"].indexOf(tab.status) > -1
                    ) {
                        if (!urlRegex.exec(tabURL)) return;

                        const uniqueDomain = tabURL && getUniqueId(tabURL);

                        if (!uniqueDomain) return;

                        chrome.windows.get(tabs[0].windowId, function (currentWindow) {
                            if (currentWindow.focused == true) {
                                updateLocal(uniqueDomain, tabID);
                            }
                        });
                    }
                }
            );
        }
    });
}

function updateLocal(domain, tabId) {
    const apps = JSON.parse(localStorage["apps"]);

    if (!apps[domain]) {
        tabIdDomains[tabId] = domain;
        apps[domain] = {
            sumTime: UPDATE_INTERVAL
        };
    } else {
        apps[domain].sumTime += UPDATE_INTERVAL;
    }

    localStorage["apps"] = JSON.stringify(apps);
}

chrome.tabs.onRemoved.addListener(onTabClosed);

setInterval(function () {
    updateActiveTabState();
}, UPDATE_INTERVAL * 1000);

问题:这是跟踪此问题的正确方法吗?请注意,我需要推送有关特定URL的数据。这就是我在 TabClos​​e 事件中添加侦听器的原因。请让我知道是否也应该发布该方法。

在生产中,没有错误,但是此脚本捕获的时间最多为分钟(4、5或7),以分钟为单位。背后的原因可能是什么?一段时间后,后台脚本会变为非活动状态,因此我的扩展程序无法跟踪使用情况吗?

0 个答案:

没有答案