Для простоты я беру ссылку на пример расширения SeaCreator от Apple.
Вы можете взять его отсюда: https://drive.google.com/file/d/1loBDgkJAEtyh0QehOUlgOSyUnW9ZZDk6/view?usp=sharing
В этом примере, как уже упоминалось, мы заменяем названия рыб другими эмодзи.
Дело в том, что когда мы нажимаем на значок расширения, он становится синим, чтобы указать, что расширение активно, и всякий раз, когда отображается какая-либо страница, все имена рыб будут автоматически заменены смайликами.
Что мне нужно, так это то, что я не хочу, чтобы расширение всегда было активным, и я хочу, чтобы действие замены выполнялось только тогда, когда я нажимаю кнопку расширения. Итак, всякий раз, когда я открываю новую веб-страницу, мне нужно нажимать кнопку панели инструментов расширения, только тогда следует выполнить замену.
В коде, который я приложил, я пробовал несколько вещей, но ничего не помогло.
//browser.runtime.addEventListener("message", handleMessage, false);
//function handleMessage(msgEvent) {
// alert('message received');
var wordReplacementMap = {"Fish": "????", "Shark": "????", "Squid": "????", "Whale": "????"};
for (var wordToReplace in wordReplacementMap) {
replace(document.body, wordToReplace, wordReplacementMap[wordToReplace]);
}
//}
//chrome.runtime.sendMessage("message");
Я всегда сталкиваюсь с -› undefined browser
или undefined chrome
.
В моем первоначальном проекте расширения я также использовал модули узлов и AJAX, поэтому существует множество зависимостей, поэтому я взял ссылку на пример Apple.
Главное, я хочу отключить автоматическую инъекцию скрипта и выполнять код скрипта только тогда, когда пользователь нажимает кнопку расширения. Мне не нужно всплывающее окно - просто выполнение по нажатию кнопки.
Пожалуйста, дайте мне знать, если кто-нибудь может помочь.