Chcę, aby użytkownik zdecydował, kiedy chce uruchomić skrypt, aby po uruchomieniu przeglądarki wyświetlała się ikona "off" i nie uruchamiał się żaden skrypt; ale gdy użytkownik go kliknie, zmieni się w ikonę "on" i wykona polecenie usercript, dopóki użytkownik nie kliknie. Mam dwie ikony png, każda o rozmiarze 32x32: on.png
i off.png
.jak zrobić/wyłączyć przyciski/ikony dla rozszerzenia chrome?
Moje dwa pytania:
Jak mogę ustawić domyślną ikonę dla mojego off.png? Próbowałem to w moim
manifest.json
ale nie ustawić ikonę, zamiast pokazał kawałek układanki (przypuszczam domyślne):... "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"] ...
Oto mój
background.js
, gdzie mam chwilowo popełnił funkcję szybkiego spróbować i przełączniki on/off oparty na zasadzieonClicked
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(); });
(należy wspomnieć, że kiedy załadować obudowę folderu Moje skrypty, ikony i manifestuje się w „Wczytaj rozszerzenie”, a następnie wybierz „sprawdzić widoki " do sprawdź, czy coś jest nie tak od razu, widzę Uncaught SyntaxError: Unexpected token :
w background.js, ale nie wiem, do czego to się odnosi) i nie wydaje się, aby mój usercript był w folderze skryptów
, wszelkie pomysły, pomoc?
@tempcode ja właśnie skopiowany kod wcześniej, ale kiedy patrzę na nią ponownie widzę, że przegapiłeś '{}' otaczające 'code' i' file' części 'executeScript' spróbuj dodać je i sprawdź, czy błąd zniknął. – BeardFist
Ok, że przeszkoda skoczyła, jesteśmy prawie na miejscu. Ta poprawka pozwoliła mi na przełączenie z off na włączone * (podczas mojego pierwszego testu napotkałem '" manifest rozszerzenia musi zażądać pozwolenia na dostęp do tego hosta "' - ponieważ zaproponowałeś usunięcie sekcji 'content-scripts' w' manifeście', gdzie miałem 'matches' i' excludes', dodałem 'permissions', aby naprawić ten błąd) *, ale jest jeszcze jeden drobny problem: raz go włączam" on "nie mogę kliknąć, aby go wyłączyć, po prostu pozostaje" włączony " "dopóki strona nie zostanie załadowana (przynajmniej wiemy, że działa unikalny" tab.id "). Ale na bok, cała reszta wydaje się działać. Dzięki za pomoc do tej pory! – tempcode
@tempcode W porządku, więc wydaje się, że problem polegał na tym, że 'status' to jakieś słowo kluczowe, więc' var status = false' nie przypisywał 'false', ale' 'false'' ponieważ status został już zdefiniowany jako ciąg znaków . Zamiast tego zmień nazwę zmiennej na coś podobnego do 'przełączania'. – BeardFist