В расширении chrome я создал свойства вкладки, которые я пытаюсь сохранить с каждой вкладкой. Каков наилучший способ сделать это? Я изучил использование localStorage, но похоже, что может быть проще. Данные ни в коем случае не являются постоянными, они существуют только до тех пор, пока табуляция выполняется.Свойства расширения Chrome для каждой вкладки
ответ
Нет необходимости использовать localStorage
. Без понятия «данные ни в коем случае не являются постоянными», уже известно, что: идентификаторы табуляции являются уникальными в течение сеанса. Из этого факта следует, что данные не являются постоянными.
Лучший способ осуществить это поддерживать хэш вкладки свойств:
chrome.tabs.onCreated
(по желанию, добавьте исходную информацию на закладку хэш)chrome.tabs.onUpdated
- (Добавить /) вкладку Обновления хэша (URL имеется)chrome.tabs.onRemoved
- Удалите запись хэш-
Tab объекты не дорого: Все свойства являются примитивными s (булевы, числа, строки).
Например (фоновая страница только):
var tabStore = {}; // <-- Collection of tabs
chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab) {
tabStore[tabId] = tab;
});
chrome.tabs.onRemoved.addListener(function(tabId) {
delete tabStore[tabId];
});
Я просто пытался это сделать сам вчера, и после того, как день беспорядка с местным хранилищем пришел к такому же выводу. Рад узнать, что я, наконец, оказался в нужном месте! Спасибо :) –
Обратите внимание, что для каждого «жизненного цикла страницы» 'onUpdated' запускается дважды (' changeInfo.status': загрузка, завершение). Итак, если вы хотите действовать только один раз на событии изменения страницы, игнорируйте один из них, например 'if (changeInfo.status! = 'Loading') {/*...do, что вы хотите .. * /}'. –
К счастью для меня (не могу говорить для OP) Мне не нужно onUpdated событие, но хорошая информация :) –
ВАЖНОЕ ДОПОЛНЕНИЕ к ответу Rob W в.
Удостоверьтесь, что вы также можете прослушивать tabs.onРедактируйте также и обновите tabStore соответственно.
chrome.tabs.onReplaced.addListener(function(addedTabId, removedTabId) {
tabStore[addedTabId] = tabStore[removedTabId];
delete tabStore[removedTabId];
});
Хром может изменить идентификатор вкладки под капотом без предупреждения или знаков. Насколько мне известно, единственным местом, где это происходит, является «мгновенный поиск» Google при вводе поиска в адресную строку. Это может быть краевой случай, но если вы не отслеживаете это, это может оказаться очень коварной проблемой.
- 1. Обновить вкладки расширения Chrome
- 2. Вкладки расширения Chrome onUpdated event
- 3. Сессия для каждой вкладки - Расширение Google Chrome
- 4. Прочтите вывод консоли вкладки из расширения Chrome
- 5. расширения Chrome: открытые вкладки с задержкой
- 6. Получить ручку окна вкладки Chrome изнутри расширения?
- 7. Расширения Chrome отключить повторное открытие созданной вкладки расширения
- 8. Расширения Chrome: Выполнение скрипта на каждой вкладке
- 9. chrome.windows undefined для расширения Chrome
- 10. Доступны ли расширения расширения Chrome для расширения?
- 11. Уникальный идентификатор для каждой установки расширения Firefox и Chrome
- 12. Уникальные данные вкладки AngularJS для каждой вкладки
- 13. Метрики для расширения Chrome
- 14. API расширения расширения Chrome?
- 15. Расширения Chrome - количество вкладок
- 16. Расширения расширения Chrome DOM
- 17. Код аддона Firefox для каждой открытой вкладки
- 18. Хром действительно создает процесс для каждой вкладки?
- 19. Настройки расширения Chrome Chrome
- 20. Каковы свойства вкладки с одинаковыми значениями для каждой вкладки в окне браузера с вкладками?
- 21. Открытие новой вкладки из текстовой записи из расширения chrome
- 22. Можно ли использовать скрипты расширения Chrome для расширения window.opener?
- 23. Перезагрузка Chrome-расширения
- 24. Трудности с сохранением URL-адреса с вкладки Chrome (для расширения Chrome)
- 25. Как установить задержку при открытии вкладки с помощью расширения Chrome
- 26. Расширение Chrome - сценарий расширения повтора после перенаправления текущей вкладки
- 27. Невидимые вкладки в chrome extension
- 28. Получение url и контента на КАЖДОЙ странице с расширения Chrome
- 29. indexdb для расширения google chrome
- 30. Ошибка JavaScript для расширения Chrome
Возможно, вы можете создать «массив», в котором ключ является идентификатором табуляции, а содержимое - тем, что вы хотите –
Да, это сработало бы на самом деле. Вероятно, мне пришлось бы иметь скрипт очистки на закрытой вкладке, чтобы массив не набросал много вкладок. – nathancahill