как сделать кнопки включения / выключения / иконки для расширения chrome?
Я хочу, чтобы пользователь решил, когда они хотят запустить скрипт, так что, когда браузер открывается, значок "выкл" отображается, и никакой скрипт не запускается; но когда пользователь нажимает на него, он меняется на значок "ВКЛ" и выполняет userscript, пока пользователь не выключит. У меня есть два значка png, которые 32x32 каждый:on.png
и off.png
.
два вопроса:
-
как я могу установить значок по умолчанию для my off.png? Я пробовал это в моем
manifest.json
но он не установил значок вместо этого показал кусочек головоломки (я предполагаю, что по умолчанию):... "browser_action": { "default_icon": { "32": "off.png" }, "default_title": "icon" }, "icons": { "32": "on.png", "32": "off.png" }, "background": { "scripts": ["background.js"] }, "content_scripts": [{ "js": ["SCRIPT.user.js"] ...
-
вот мой
background.js
, где я временно сделал быструю функцию, чтобы попытаться включить/выключить на основеonClicked
var status = 0; function toggle() { if (status == 0){ chrome.browserAction.setIcon({path: "on.png", tabId:tab.id}); // so it's set for the tab user is in chrome.tabs.executeScript(tab.id, file:"SCRIPT.user.js"); //execute for this tab status++; } if (status == 1){ chrome.browserAction.setIcon({path: "off.png", tabId:tab.id}); chrome.tabs.executeScript(tab.id, code:"alert()"); // execute nothing when off status++; } if (status > 1) status = 0; // toggle } chrome.browserAction.onClicked.addListener(function(tab) { toggle(); });
(я должен упомянуть, что когда я загружаю папку с моими скриптами, значками и манифестом в "Загрузить распакованное расширение", а затем выберите" проверить представления", чтобы проверить, есть ли что-то сразу неправильно, я вижу Uncaught SyntaxError: Unexpected token :
в фон.js, хотя я не знаю, что это значит)... и, похоже, он не показывает мой userscript в папке scripts
Итак, есть идеи, помогите?
1 ответов
хорошо, поэтому позвольте мне внести несколько изменений в ваш манифест и фоновые страницы.
манифест.в JSON
"browser_action": {
"default_icon": "off.png",
"default_title": "icon"
},
это сделает значение по умолчанию off.png
. Что касается раздела icons, прочитайте docs чтобы увидеть, для чего он используется, но пока просто удалите его полностью. Также удалите то, что у вас есть в разделе contentScripts. Если вы хотите ввести его программно, нет необходимости перечислять его в манифесте.
далее некоторые изменения на фоновой странице, чтобы сделать его немного более чистым:
фон.js
var toggle = false;
chrome.browserAction.onClicked.addListener(function(tab) {
toggle = !toggle;
if(toggle){
chrome.browserAction.setIcon({path: "on.png", tabId:tab.id});
chrome.tabs.executeScript(tab.id, {file:"SCRIPT.user.js"});
}
else{
chrome.browserAction.setIcon({path: "off.png", tabId:tab.id});
chrome.tabs.executeScript(tab.id, {code:"alert()"});
}
});