@Soul1

Как правильно обработать запуск расширения google chrome?

Пробую написать расширения для google chrome, перечитал официальную документацию и гайды на русском, не могу найти в чём проблема.
Есть файл background.js
spoiler
// Вызывается, когда пользователь нажимает на действие браузера.
chrome.browserAction.onClicked.addListener(function(tab) {
    // Отправить сообщение на активную вкладку
    chrome.tabs.query({active: true, currentWindow: true}, function(tabs) {
      var activeTab = tabs[0];
      chrome.tabs.sendMessage(activeTab.id, {"message": "clicked_browser_action"});
    });
});

файл со скриптом
spoiler
chrome.runtime.onMessage.addListener(
    function(message, callback) {
      if (message == "licked_browser_action"){
        chrome.tabs.executeScript(alert('hello'));
      }
        return true
});

файл manifest.json
spoiler
{
    "manifest_version": 2,
    "name": "test",
    "version": "1.0.0",
    "content_security_policy": "script-src 'self'; object-src 'self'",
    "background": {
      "scripts": ["background.js"]
    },
    "permissions": [
      "activeTab"
    ],
    "content_scripts": [
      {
        "matches": [
          "<all_urls>"
        ],
        "js": ["search_in_file.js", "test.js"]
      }
    ],
    "browser_action": {
      "default_icon": "icon.png",
      "default_popup": "popup.html"
    },
    "web_accessible_resources": [
      "search_in_file.js", "test.js"
    ]
}

В файле скрипта была функция, но для теста упростил до alert('hello'). И запускалась она по условию, когда в message получала нужное значение "clicked_browser_action", тоже убрал это условие, чтобы всегда запускалась.

И в данный момент при первом открытии страницы и клику по иконке расширения выводится заданный нами алерт, но при повторном нажатии больше не срабатывает. При перезагрузке страницы алерт выводится сразу же, без клика. И точно так же не срабатывает при клике.
Как изменить код, чтобы скрипт отрабатывал при каждом нажатии на иконку?

UPD: как оказалось в первый раз исполняется соседний файл js, где только одна строка - alert('hello'). А в нашем скрипте вообще ничего не отрабатывает.
  • Вопрос задан
  • 81 просмотр
Пригласить эксперта
Ответы на вопрос 1
dollar
@dollar
Делай добро и бросай его в воду.
Для начала
"licked_browser_action" не совпадает с "clicked_browser_action"

Ну а так проверяйте поэтапно. Первым делом, что обработчик вообще срабатывает при каждом клике, то есть нам надо выяснить, даёт ли осечку сам обработчик нажатия или что-то после него. Для этого вставьте что-то типа этого:
console.log("onClicked");
Ну и так далее по цепочке. По логам дальше будет видно, где затык.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы