Ich bin mir nicht sicher, wie ich das machen soll, und die Dokumentation scheint das nicht so offensichtlich zu machen.
Ich habe versucht, ein background_page
zu machen und chrome.pageAction.show(tab.id);
darin zu setzen, aber das scheint nicht zu funktionieren.
Ich möchte das browser_action
-Symbol nicht verwenden, da das Symbol lediglich den Status des Plugins widerspiegelt, aber es ist keine Schaltfläche zum Ausführen von Aktionen.
Wie füge ich das Symbol von page_action in die Adressleiste für eine beliebige Seite / Registerkarte ein?
EDIT: Hier ist mein manifest.json:
%Vor%Where icon.png ist eine PNG-Grafik im Format 19 x 19 Pixel. Hier ist die background.html -Quelle, in der ich versuche, das page_action-Icon für alle Tabs erscheinen zu lassen:
%Vor% Sie können keine Inline-Skriptblöcke in Ihrer Hintergrundseite verwenden - js-Code kann nur von einem verknüpften Skript aus ausgeführt werden (so: <script type="text/javascript" src="background.js"></script>
). Dies liegt an der Inhaltssicherheitsrichtlinie .
Wie in Abrahams Antwort erwähnt, sollten Sie browser_action und nicht page_action verwenden, da das Symbol für alle Seiten angezeigt werden soll. Laut Google pageAction-Dokumentation :
Verwenden Sie keine Seitenaktionen für Funktionen, die für die meisten Seiten sinnvoll sind. Verwenden Sie stattdessen Browser-Aktionen.
Symbole für Seitenaktionen werden auf der Omnibar (der Adressleiste von Chrome) angezeigt, während Symbole für Browseraktionen als Symbolleistenschaltfläche neben der Omnibar angezeigt werden. Beide können verwendet werden, um den Status des Plugins und als Aktionsschaltfläche zu reflektieren.
Damit das Symbol angezeigt wird, müssen Sie Folgendes aufrufen: chrome.pageAction.show(tabId)
. Sie können dies jedoch nicht einfach über ein Inhaltsskript aufrufen, da chrome.pageAction.show () die tabId übergeben und tabId von chrome.tabs und chrome.tabs ist nicht über Inhaltsskripts zugänglich .
Um eine Browser-Aktionsschaltfläche hinzuzufügen und ihr Verhalten beim Klicken zu definieren, definieren Sie das browser_action-Element in Ihrer manifest.json-Datei ...
%Vor%... und setze diesen Code in dein Hintergrundskript:
%Vor%Oder Wenn Sie gegen die Konvention gehen und eine pageAction verwenden möchten, können Sie den Code manifest.json aus Ihrer Frage verwenden und Folgendes in Ihr Hintergrundskript einfügen:
%Vor%Weitere Informationen finden Sie im Quellcode einiger ihrer Beispielerweiterungen .
Wenn Sie möchten, dass ein Inhaltsskript ein Seitenaktionssymbol anzeigt, kann er (das Inhaltsskript) das nicht, aber er kann eine Nachricht an die background.js senden (background.js is) erlaubt, Seitenaktionssymbole zu zeigen)
Inhaltsskript (zB foo.js):
%Vor%background.js:
%Vor% Verwenden Sie ein browser_action
-Symbol. page_action
und browser_action
sind identisch und bieten dieselbe Funktionalität, außer dass page_action
s nur für bestimmte Seiten aktiviert werden kann. Wenn Sie nicht möchten, dass browser_action
sich wie eine Schaltfläche verhält, tun Sie nichts.
Tags und Links google-chrome google-chrome-extension chromium