Подтвердить что ты не робот

Запустите script при каждом нажатии значка расширения Chrome

Как написать chrome-расширение, так что каждый раз, когда пользователь нажимает на значок, мой script запускается, но всплывающее окно не открывается? (Я бы посмотрел это в самих документах, но по какой-то причине они внезапно перестали работать на каждой странице, как я дошел до этого момента).

Я предполагаю, что он правильно настраивает манифест. Вот что у меня сейчас:

{
  "name": "My Extension",
  "version": "0.1",
  "description": "Does some simple stuff",
  "browser_action": {
    "popup" : "mine.html",
    "default_icon": "logo.png"
  },
  "permissions": [
    "notifications"
  ]
}
4b9b3361

Ответ 1

Удалите всплывающее окно из раздела browser_action манифеста и используйте справочные страницы вместе с Действие браузера в фоновом режиме script.

chrome.browserAction.onClicked.addListener(function(tab) { alert('icon clicked')});

Ответ 2

Во-первых, если вы не хотите показывать всплывающее окно, удалите "popup" : "mine.html" из вашего manifest.json (показано в вашем вопросе).

Ваш manifest.json будет выглядеть примерно так:

{
  "name": "My Extension",
  "version": "0.1",
  "manifest_version" : 2,
  "description": "Does some simple stuff",
  "background" : {
    "scripts" : ["background.js"]
  },
  "browser_action": {
    "default_icon": "logo .png"
  },
  "permissions": ["activeTab"]
}
  • Обратите внимание, что manifest_version должен быть там, и он должен быть 2.
  • Обратите внимание, что добавлено разрешение activeTab.
  • Обратите внимание, что вы можете сделать только одно действие при нажатии кнопки действия браузера: либо вы можете отобразить всплывающее окно, либо выполнить script, но вы не можете обойти оба.

Во-вторых, чтобы выполнить script при щелчке значка, поместите код ниже в свой background.js файл (имя файла указано в manifest.json):

chrome.browserAction.onClicked.addListener(function(tab) {
   chrome.tabs.executeScript(null, {file: "testScript.js"});
});

Наконец, testScript.js - это то, где вы должны поместить код, который хотите выполнить, когда нажимается значок.

Ответ 3

Вместо указания всплывающей страницы используйте chrome.browserAction.onClicked API, зарегистрированный здесь.

Ответ 4

Это было именно то, что мне нужно, но я должен добавить следующее: Если все, что вам нужно, - это одноразовое событие, например, когда пользователь нажимает на значок расширения, тогда фоновые страницы - это пустая трата ресурсов, поскольку она будет работать в фоновом режиме ВСЕГДА. Вместо этого используйте "Страницы событий":

"background": {
        "scripts": ["script.js"],
        "persistent": false
      }