"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo puedo detectar si una extensión de Chrome está instalada usando JavaScript?

¿Cómo puedo detectar si una extensión de Chrome está instalada usando JavaScript?

Publicado el 2024-11-23
Navegar:118

How can I detect if a Chrome extension is installed using JavaScript?

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...
}
Último tutorial Más>

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