Как посчитать HTTP-ответы для каждой веб-страницы, используя WebExtension - PullRequest
0 голосов
/ 27 марта 2020

Используя WebExtensions, я пытаюсь написать скрипт контента , который бы подсчитывал количество HTTP-ответов на веб-страницу.

Я только начал изучать WebExtensions, поэтому я могу быть полностью не по пути, но до сих пор мой подход заключался в изменении фонового скрипта для прослушивания browser.webRequest.onHeadersReceived. После запуска обратный вызов этой функции вызовет browser.tabs.sendMessage в tabId, откуда и был получен запрос к этому ответу.

В скрипте содержимого Я использую browser.runtime.onMessage.addListener для прослушивания эти сообщения из фонового сценария.

При таком подходе у меня возникают две проблемы:

  1. Фоновый сценарий пытается отправить сообщения в сценарий содержимого даже за до скрипт содержимого начал прослушивание, что привело к ошибкам sendMessage и, таким образом, к потере информации.
  2. При перезагрузке страницы некоторые сообщения из фонового скрипта принимаются до скрипта контента перезагружается, некоторые теряются (предположительно в период, когда один скрипт контента был выгружен и до запуска другого), а некоторые принимаются после.

Я искал, может ли browser.storage.local помочь мне с этой ситуацией. С этим я могу избежать проблемы потери сообщений, просто сохраняя счет в этом хранилище.

Но у меня все еще есть проблема в фоновом скрипте, который я не знаю, увеличивать ли счетчик для сети страница, которая отображалась до перезагрузки или после (из-за проблемы № 2, описанной выше).

Я думаю, что вместо использования tabId в качестве «указателя» на то, где количество увеличивается, имея помог бы какой-то ID для веб-страницы, к которой относится ответ. Но я еще не смог найти ничего подобного в документации. Но опять же, я новичок в WebExtensions, так что, может быть, я упускаю совершенно другой подход.

...