make how google extension developer create crear chrome google-chrome google-chrome-extension

google-chrome - google - how to do a chrome extension



Ejecutar script cada vez que se hace clic en el icono de la extensión de Chrome (5)

¿Cómo escribo una extensión de Chrome de modo que cada vez que un usuario hace clic en el icono, se ejecuta mi secuencia de comandos pero no se abre ninguna ventana emergente? (Yo buscaría esto en los documentos, pero por alguna razón dejaron de funcionar repentinamente, 404en cada página, como llegué hasta este punto).

Supongo que solo está configurando el manifiesto correctamente. Esto es lo que tengo ahora:

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


En lugar de especificar una página emergente, use la API chrome.browserAction.onClicked , documentada here .


Esto era justo lo que necesitaba, pero debería agregar esto: si todo lo que necesitas es un evento único como cuando un usuario hace clic en el ícono de la extensión, las páginas en segundo plano son una pérdida de recursos, ya que se ejecutarán en segundo plano TODO el tiempo . Use las páginas de eventos en su lugar:

"background": { "scripts": ["script.js"], "persistent": false }


Primero, si no desea mostrar una ventana emergente, elimine "popup" : "mine.html" de su manifest.json (que se muestra en su pregunta).

Su manifest.json se verá más o menos así:

{ "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"] }

  • Tenga en cuenta que manifest_version debe estar allí y debe ser 2 .
  • Tenga en cuenta que se ha agregado el permiso activeTab .
  • Tenga en cuenta que solo puede hacer una cosa cuando se hace clic en el botón de acción del navegador: puede mostrar una ventana emergente o puede ejecutar una secuencia de comandos, pero no puede hacer ambas cosas.

En segundo lugar, para ejecutar una secuencia de comandos cuando se hace clic en el icono, coloque el código a continuación en su archivo background.js (el nombre de archivo se especifica en su manifest.json ):

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

Finalmente, testScript.js es donde debe poner el código que desea ejecutar cuando se hace clic en el icono.


Quite la ventana emergente de su sección browser_action del manifiesto y use las páginas de fondo junto con la acción del navegador en la secuencia de comandos de fondo.

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


necesita agregar un archivo de fondo. pero primero debes agregar un atributo en manifest.json como,

"background":{ "scripts":["background.js"] }

ahora nombre un archivo en su carpeta de extensiones como background.js hay una forma de enviar objetos desde el fondo a sus scripts de contenido suponga que su script de contenido se llama content.js, entonces lo que necesita hacer es escribir este fragmento de código en el archivo background.js

chrome.browserAction.onClicked.addListener(sendfunc); function sendfunc(tab){ msg={txtt:"execute"}; chrome.tabs.sendMessage(tab.id,msg); }

lo que el código anterior está haciendo es enviar un objeto llamado msg a la página de contenido y este objeto msg tiene una propiedad txtt que es igual a "ejecutar". lo que debe hacer a continuación es comparar los valores en el script de contenido como

chrome.runtime.onMessage.addListener(recievefunc); function receivefunc(mssg,sender,sendResponse){ if(mssg.txtt==="execute"){ /* your code of content script goes here */ } }

ahora, cada vez que hace clic en el ícono de la extensión, se envía un objeto llamado msg desde el fondo al contenido. la función "recievefunc ()" comparará su propiedad txtt con la cadena "execute" si coincide con el resto del código se ejecutará.

Nota: msg, txtt, sendfunc, receivefunc, mssg son variables y no palabras clave de Chrome, por lo que puede usar cualquier cosa que desee.

Espero eso ayude.

:)