С помощью wOxxOm я смог найти решение. Наиболее важно отметить, что pageAction.onClicked
срабатывает, только когда no default_popup
указано в файле manifest.json
или задано с помощью функции pageAction.setPopup
(спасибо, wOxxOm!).
решение для popup.html
всплывающих и внедренных сценариев контента состоит в том, чтобы внедрить скрипты контента из файла popup.js
. Однако есть предостережение: popup.js
выполняется при каждом открытии всплывающего окна, тогда как скрипт содержимого является постоянным (для контекста окна текущей вкладки). Чтобы избежать выполнения popup.js
скрипта содержимого при каждом открытии popup.html
, можно придерживаться следующего шаблона:
if (typeof scriptAlreadyExecuted === 'undefined') {
// scriptAlreadyExecuted is undefined, therefore let's execute our content script
var scriptAlreadyExecuted = true; // let's define this variable in window context to avoid re-executing the content script
executeContentScript();
else {
// scriptAlreadyExecuted in window range -> let's skip injecting script again.
console.log("No need to execute script again. Skipping script execution.")
}
Альтернативой может быть расширение, отправляющее сообщение о том, что фоновый скрипт слушает, но это избавит от необходимости следить за тем, чтобы скрипт контента не выполнялся дважды.
Хорошей альтернативой может быть использование webNavigation.onCompleted
-API в сочетании с фильтрами событий. - Я еще не пробовал это, так как я еще не узнал, как использовать CSS фильтры с этим (что легко с PageStateMatcher
-API).
Надеюсь, это кому-нибудь поможет!