Я занимаюсь созданием расширения, расширение отображает значение в секундах для пользователя как количество времени, затраченного пользователем на конкретный веб-сайт. У меня все работает, но каждый раз, когда хром закрывается или компьютер перезапускается, переменная времени начинает отсчет снова с 0. Я полагал, что использование хром-хранилища API должно выполнять эту работу. После прохождения документации по API мне удалось сохранить и получить номер из локального хранилища. То, что я не могу сделать, - это сохранить данные в локальном хранилище, когда пользователь закрывает хром. Есть ли способ обнаружить такое событие?Хранить и извлекать данные из локального хранилища с использованием хром-хранилища API
1
A
ответ
1
Прежде всего, вам не нужно использовать API chrome.storage
, чтобы сделать эту работу. Кстати, к сожалению, то, что вы ищете, не существует. Вы ищете какое-то событие (например, onBrowserClosed
), которое не реализовано в API Chrome. Сообщение об ошибке было сделано HERE (хотя это на самом деле не ошибка), если вы хотите остаться в курсе, вы можете его зажечь.
Несмотря на то, что проблема может быть решена с помощью setInterval()
, который выполнит вашу функцию, чтобы обновить время, которое пользователь потратил на сайт на каждый определенный интервал (в миллисекундах), и остановится при закрытии браузера. Что-то вроде этого:
var currentActiveTab, chromeHasFocus = false;
localStorage.timeSpentOnSites = localStorage.timeSpentOnSites || "{}";
// get the first tab at startup
chrome.tabs.query({active: true, highlighted: true}, function(tabs) {
currentActiveTab = tabs[0];
console.log('New active tab:', tabs[0]);
});
// this will keep currentActiveTab updated to always be the active tab (the one that the user is watching)
chrome.tabs.onUpdated.addListener(function(tabID, info, tab) {
if (tab.active && tab.highlighted) currentActiveTab = tab;
console.log('New active tab:', tab);
});
// this also
chrome.tabs.onActivated.addListener(function(info) {
chrome.tabs.query({active: true, highlighted: true}, function(tabs) {
currentActiveTab = tabs[0];
console.log('New active tab:', tabs[0]);
});
});
// this will check if chrome is active or not
chrome.windows.onFocusChanged.addListener(function(windowID) {
if (windowID === chrome.windows.WINDOW_ID_NONE) {
chromeHasFocus = false;
console.log('Chrome lost focus.');
} else if (!chromeHasFocus) {
chromeHasFocus = true;
console.log('Chrome has focus.');
}
});
function addTimeSpentOnSite(site) {
var T = JSON.parse(localStorage.timeSpentOnSites);
// if site already exists increment the time spent on it
if (T[site]) T[site]++;
// otherwise set the time spent on it as 1 (second)
else T[site] = 1;
localStorage.timeSpentOnSites = JSON.stringify(T);
}
setInterval(function() {
if (!chromeHasFocus) return;
// if the chrome window isn't active the user is not watching the site
var site = currentActiveTab.url.split('/')[2];
// get the site name, something like www.site.com
addTimeSpentOnSite(site);
// increase the amount of time spent on the site
}, 1000);
Смежные вопросы
- 1. Хранить и извлекать данные JSON из локального хранилища в IOS
- 2. хранить/извлекать данные из localstorage db с помощью GWT phonegap
- 3. Как извлекать данные из API и хранить их в HDFS
- 4. Хранить и извлекать данные из SqliteDataBase
- 5. Как хранить, извлекать и удалять данные с использованием данных Ember?
- 6. Как извлекать и хранить данные
- 7. Как я могу хранить и извлекать много JavaScript примитивов в и из локального хранилища
- 8. Хранить объект из локального хранилища в переменную
- 9. ecache хранить и извлекать значения из дискового хранилища
- 10. Удаление из локального хранилища с использованием javascript
- 11. Чтение из локального хранилища с использованием jQuery
- 12. Асинхронно извлекать данные из хранилища данных и рисовать карту
- 13. Использование локального хранилища и адаптера REST одновременно?
- 14. Можно ли извлекать данные из локального хранилища HTML5 и сохранять в базу данных сервера?
- 15. Как получить данные из локального хранилища?
- 16. Как хранить и извлекать данные из хеш-таблиц - javascript
- 17. хранить файлы на s3 из локального хранилища ckan
- 18. Как хранить и извлекать данные в python
- 19. Как хранить теги XML и извлекать данные
- 20. Хранить и извлекать данные онлайн с помощью usercript
- 21. Сохранение данных с использованием локального хранилища
- 22. данные локального хранилища на сервере
- 23. Данные не хранятся с использованием локального хранилища? - Html5
- 24. Хранить и извлекать данные из кеша в Iphone
- 25. Как хранить данные в массиве с использованием локального хранилища в HTML?
- 26. Дата хранения и получение из локального хранилища
- 27. извлекать данные с использованием Ajax и mysql
- 28. как хранить и извлекать символ * из строки?
- 29. Настой: извлекать данные из БД и хранить его сессии
- 30. Очистить данные локального хранилища с удаленного сервера
Да, это именно то, что я закончил делать. Но разве это неэффективно? –
@ nashmaniac Да, я знаю, это немного неэффективно, и установка меньшего количества миллисекунд в setInterval заставит его работать медленнее, но это единственное решение прямо сейчас. –