Detección de la instalación de la extensión de Chrome en JavaScript
Al crear una extensión de Chrome, puede ser necesario determinar si la extensión está instalada desde dentro de un secuencia de comandos JavaScript externa. Esto ayuda a personalizar el contenido web según la presencia de la extensión.
Según la documentación de Chrome, es posible lograr esto a través del mensaje que pasa del sitio web a la extensión.
Implementación de código
En el archivo background.js de la extensión (o cualquier otro script sin contenido), agregue un mensaje oyente:
chrome.runtime.onMessageExternal.addListener( function(request, sender, sendResponse) { if (request) { if (request.message) { if (request.message == "version") { sendResponse({version: 1.0}); } } } return true; } );
Este oyente recibirá mensajes del sitio web.
Desde el script del sitio web, envíe un mensaje al ID de la extensión:
var hasExtension = false; chrome.runtime.sendMessage(extensionId, { message: "version" }, function (reply) { if (reply) { if (reply.version) { if (reply.version >= requiredVersion) { hasExtension = true; } } } else { hasExtension = false; } } );
Compruebe la variable hasExtension para determinar si la extensión está instalada.
Configuración del manifiesto
Recuerde agregar una entrada al manifest.json archivo, especificando los dominios que pueden enviar mensajes a la extensión:
"externally_connectable": { "matches": ["http://mylocalhostextensiontest/*", "http://*:*/*"] },
Naturaleza asíncrona y manejo de errores
Tenga en cuenta que el mecanismo de paso de mensajes es asíncrono, por lo que es posible que deba manejar esto en su código.
Además, si la extensión no está instalada o deshabilitada, chrome.runtime.sendMessage generará una excepción. En tales casos, verifique chrome.runtime.lastError después de enviar el mensaje:
if (chrome.runtime.lastError) { // Handle the error here... }
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3