значок изменения расширения Chrome работает не так, как ожидалось

#javascript #google-chrome-extension

#javascript #google-chrome-extension

Вопрос:

manifest.json

 {
  "manifest_version": 2,

  "name": "Project",
  "description": "Chrome Extension for sending messages",
  "version": "1.0",

  "browser_action": {
    "default_icon": "red_dot.png"
  },
  "permissions": [
    "activeTab",
    "https://ajax.googleapis.com/",
        "storage"
  ],

  "background" : {
    "scripts" : ["background.js"]
  },
    
    "content_scripts": [
      {
      "matches":["https://www.website.com/*"],
      "js":["keypress.js", "jquery.js", "js_file.js"],
            "run_at": "document_end"
        }
    ]
}
  

background.js

 var running = false

chrome.browserAction.onClicked.addListener(function(tab) {
    if (running) {
        alert('script is running, turning off');
        chrome.browserAction.setIcon({path: "red_dot.png"})
        running = false
    } else {
        alert('script is not running, turning on');
        chrome.browserAction.setIcon({path: "green_dot.jpg"})
        running = true
    }
});
  

Когда я нажимаю на значок, я получаю всплывающее окно, как и ожидалось, но сам значок не меняется.

Я получаю эту ошибку:

 Unchecked runtime.lastError: Icon invalid.
  

но я не понимаю, почему. Код кажется допустимым.

Комментарии:

1. green_dot.jpg это jpg, а не png? Я думаю, вам следует использовать png.

2. это файл .jpg, вам запрещено использовать файлы .jpg?

3. изменил его на файл png, все еще не работает

4. На всякий случай, простое переименование не поможет, вам нужно преобразовать формат. Также не забудьте щелкнуть значок перезагрузки на карточке расширения в Chrome:// страница расширений.

5. я загрузил другой значок в формате png. чтобы проверить, я удалил расширение и повторно загрузил его

Ответ №1:

используйте этот API и аккуратно вводите параметры, в частности путьhttps://developer.chrome.com/extensions/browserAction#method-setIcon