Ответ 1
Удалите всплывающее окно из раздела browser_action манифеста и используйте справочные страницы вместе с Действие браузера в фоновом режиме script.
chrome.browserAction.onClicked.addListener(function(tab) { alert('icon clicked')});
Как написать chrome-расширение, так что каждый раз, когда пользователь нажимает на значок, мой script запускается, но всплывающее окно не открывается? (Я бы посмотрел это в самих документах, но по какой-то причине они внезапно перестали работать на каждой странице, как я дошел до этого момента).
Я предполагаю, что он правильно настраивает манифест. Вот что у меня сейчас:
{
"name": "My Extension",
"version": "0.1",
"description": "Does some simple stuff",
"browser_action": {
"popup" : "mine.html",
"default_icon": "logo.png"
},
"permissions": [
"notifications"
]
}
Удалите всплывающее окно из раздела browser_action манифеста и используйте справочные страницы вместе с Действие браузера в фоновом режиме script.
chrome.browserAction.onClicked.addListener(function(tab) { alert('icon clicked')});
Во-первых, если вы не хотите показывать всплывающее окно, удалите "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 при щелчке значка, поместите код ниже в свой background.js
файл (имя файла указано в manifest.json
):
chrome.browserAction.onClicked.addListener(function(tab) {
chrome.tabs.executeScript(null, {file: "testScript.js"});
});
Наконец, testScript.js
- это то, где вы должны поместить код, который хотите выполнить, когда нажимается значок.
Вместо указания всплывающей страницы используйте chrome.browserAction.onClicked
API, зарегистрированный здесь.
Это было именно то, что мне нужно, но я должен добавить следующее: Если все, что вам нужно, - это одноразовое событие, например, когда пользователь нажимает на значок расширения, тогда фоновые страницы - это пустая трата ресурсов, поскольку она будет работать в фоновом режиме ВСЕГДА. Вместо этого используйте "Страницы событий":
"background": {
"scripts": ["script.js"],
"persistent": false
}