103 votes

Exécuter script à chaque fois que l'on clique sur l'icône de l'extension Chrome.

Comment puis-je écrire une extension chrome de sorte que chaque fois qu'un utilisateur clique sur l'icône, mon script est exécuté, mais aucune fenêtre contextuelle n'est ouverte ? (J'aurais cherché cela dans les docs moi-même, mais pour une raison quelconque, ils ont soudainement cessé de fonctionner, 404ing chaque page, comme je suis arrivé à ce point).

Je suppose que c'est juste la mise en place du manifeste correctement. Voici ce que j'ai maintenant :

{
  "name": "My Extension",
  "version": "0.1",
  "description": "Does some simple stuff",
  "browser_action": {
    "popup" : "mine.html",
    "default_icon": "logo.png"
  },
  "permissions": [
    "notifications"
  ]
}

114voto

arunkumar Points 5350

Retirez le popup de la section browser_action de votre manifeste et utilisez pages de fond ainsi que Action du navigateur dans l'arrière-plan script.

chrome.browserAction.onClicked.addListener(function(tab) { alert('icon clicked')});

11 votes

Où dois-je mettre ça exactement ? Sans mine.html, le seul fichier dans l'extension est le manifeste... enfin, et l'icône.

3 votes

Jetez un coup d'œil aux pages de fond - code.google.fr/chrome/extensions/background_pages.html . C'est là que vous placez votre code de longue durée et le code qui est commun à plusieurs pages. Le lien vers le document ci-dessus contient un exemple avec browserAction.onClicked.

0 votes

Ah, je l'ai. J'ai d'abord essayé une page d'arrière-plan, mais je n'étais pas conscient de l'existence de browserAction.onClicked.

79voto

yogesh kumar Points 830

Tout d'abord, si vous ne voulez pas afficher une popup, supprimez "popup" : "mine.html" de votre manifest.json (indiqué dans votre question).

Votre manifest.json ressemblera à quelque chose comme ça :

{
  "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"]
}
  • Notez que manifest_version doit être là et il doit être 2 .
  • Notez que le activeTab a été ajouté.
  • Notez que vous ne pouvez faire qu'une seule chose lorsque le bouton d'action du navigateur est cliqué : soit vous pouvez afficher une popup, soit vous pouvez exécuter un script, mais vous ne pouvez pas faire les deux.

Deuxièmement, pour exécuter un script lorsque l'on clique sur l'icône, placez le code ci-dessous dans votre background.js (le nom du fichier est spécifié dans le fichier manifest.json ) :

chrome.browserAction.onClicked.addListener(function(tab) {
   chrome.tabs.executeScript(null, {file: "testScript.js"});
});

Enfin, testScript.js est l'endroit où vous devez mettre le code que vous voulez exécuter lorsque l'icône est cliquée.

9voto

Rahul Gurung Points 495

Si vous voulez suivre le manifest 3 alors vous devriez le faire :

chrome.action.onClicked.addListener(function (tab) {
    console.log("Hello")
});

Notez également que vous ne verrez pas le Hello dans la console normale, pour voir le hello allez dans le menu extensions et cliquez sur inspect views devant le menu d'extension spécifique.

3 votes

Où dois-je mettre cela ? background.js est déprécié

5voto

Boris Smus Points 4347

Au lieu de spécifier une page popup, utilisez l'option chrome.browserAction.onClicked API, documenté aquí .

4voto

Sal7_one Points 43

Dans le manifeste 3, vous pourriez le faire comme suit

// manifest.json

  "background": {
  "service_worker": "back.js"
},

// back.js

chrome.action.onClicked.addListener(tab => { 
chrome.tabs.create({
    url: 'index.html'
  });
 });

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X