Comment puis-je ajouter une icône dans la barre d'adresse pour une extension Chrome?
Je ne suis pas sûr de la façon de le faire, et la documentation ne semble pas faire cela tout à fait évident.
J'ai essayé de faire un background_page
et de mettre chrome.pageAction.show(tab.id);
à l'intérieur de cela, mais cela ne semble pas fonctionner.
Je ne veux pas utiliser le browser_action
icône parce que l'icône ne reflète l'état du plugin, mais il n'est pas un bouton pour effectuer toutes les actions.
Comment puis-je ajouter de la page_action de l'icône à l'intérieur de la barre d'adresse pour toute la page/onglet tout le temps?
EDIT: Voici mon manifeste.json:
{
"name": "My Very First Extension :D",
"version": "0.0.1",
"description": "Awesomeness",
"background_page": "background.html",
"page_action": {
"default_icon": "icon.png"
},
"content_scripts": [{
"matches": ["http://*/*", "https://*/*"],
"js": ["mmm.js"]
}]
}
Où icône.le png est un 19x19 pixel de l'image PNG. Voici l'background.html la source, là où je suis en train de faire la page_action apparaître l'icône de tous les onglets:
<!DOCTYPE html>
<html>
<head>
<script>
chrome.pageAction.show(tab.id);
</script>
</head>
</html>
OriginalL'auteur trusktr | 2011-12-04
Vous devez vous connecter pour publier un commentaire.
Je vois deux problèmes avec votre code.
Vous ne pouvez pas utiliser des blocs de script inline dans votre fond de page -- code js ne peut être exécuté à partir d'un script (comme:
<script type="text/javascript" src="background.js"></script>
). C'est à cause de la Contenu De La Politique De Sécurité.Comme indiqué dans d'abraham répondre, puisque vous voulez que l'icône apparaisse pour toutes les pages, vous devez utiliser browser_action, pas page_action. Selon Google pageAction page de documentation:
Icônes pour les actions de page apparaissent à l'intérieur de l'omnibar (Chrome la barre d'adresse), tandis que les icônes du navigateur actions apparaissent comme un bouton de la barre à côté de l'omnibar. Peut être utilisé pour refléter l'état du plug-in et un bouton d'action.
Solutions
Pour obtenir l'icône apparaisse, vous devez appeler le:
chrome.pageAction.show(tabId)
. Toutefois, vous ne peut pas simplement appeler à partir d'un contenu de script, parce que chrome.pageAction.show() doit être passé le tabId, et tabId est récupéré à partir de chrome.les onglets et les le chrome.les onglets n'est pas accessible à partir des scripts de contenu.Pour ajouter un navigateur bouton d'action et de définir le comportement lorsque l'utilisateur clique dessus, de définir les browser_action élément dans votre manifeste.fichier json ...
... et placez ce code dans votre arrière-plan script:
Ou, si vous voulez aller à l'encontre de la convention et de l'utilisation d'un pageAction, vous pouvez utiliser le manifeste.code json de votre question et placez les éléments suivants dans votre arrière-plan script:
Pour la recherche, consultez le code source de certains de leurs les extensions échantillons.
OriginalL'auteur Stephen M. Harris
Si vous voulez un content-script pour afficher une page, icône d'action, il (le contenu du script) ne peuvent pas faire cela, mais, il peut envoyer un message à l'background.js pour le faire (la background.js est autorisé à afficher la page d'icônes d'action)
contenu du script (par exemple. foo.js):
background.js:
OriginalL'auteur sports
Utiliser un
browser_action
icône.page_action
etbrowser_action
sont les mêmes et fournissent la même fonctionnalité sauf quepage_action
s peut être activé uniquement pour des pages spécifiques. Si vous ne voulez pas lebrowser_action
à agir comme un bouton que de ne pas faire n'importe quoi.chrome.pageAction.show(tab.id)
est la manière de le faire. Vous devrez nous montrer plus de votre code de debug que d'autres si.Bon, j'ai mis à jour ma question avec le manifeste.json et le background_page.
tab.id
n'est pas définie de sorte qu'il ne sait pas de quel onglet pour afficher l'page_action
Alors, quelle est la manière standard de faire le
page_action
apparaître l'icône pour toutes les pages? (Le souhaitez, il était simple commebrowser_action
s!)OriginalL'auteur abraham