Отслеживание количества времени, проведенного на определенном веб-сайте: расширение Chrome - PullRequest
0 голосов
/ 24 декабря 2018

Требование: Создайте расширение 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-адресе. Именно поэтому я добавил слушателя в TabClose событие. Пожалуйста, дайте мне знать, если я также должен опубликовать этот метод.

В работе нет ошибок, но время, зафиксированное этим сценарием, составляет макс. (4, 5 или 7) при макс.В чем может быть причина? Фоновый сценарий становится неактивным через некоторое время, и, следовательно, мое расширение не может отслеживать использование?

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