Maison >interface Web >js tutoriel >Les sites Web peuvent-ils détecter si une extension Chrome est installée ?

Les sites Web peuvent-ils détecter si une extension Chrome est installée ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-21 18:22:141071parcourir

Can Websites Detect If a Chrome Extension is Installed?

Comment détecter l'installation d'une extension Chrome à partir d'un script externe

Afin de créer une expérience utilisateur transparente, il est souvent nécessaire de déterminer si un utilisateur dispose d'une extension Chrome spécifique installé. Cela permet aux sites Web d'adapter leur contenu et leurs fonctionnalités en fonction de la présence de l'extension.

Selon les dernières mises à jour, Chrome offre désormais la possibilité d'envoyer des messages d'un site Web vers une extension. Pour y parvenir, suivez ces étapes :

  1. Dans le fichier background.js de l'extension, ajoutez le code suivant :

    chrome.runtime.onMessageExternal.addListener(
        function(request, sender, sendResponse) {
            if (request) {
                if (request.message) {
                    if (request.message == "version") {
                        sendResponse({version: 1.0});
                    }
                }
            }
            return true;
        });
  2. Depuis le site Internet, vous pouvez envoyer un message au extension :

    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;
            }
        });
  3. Une fois que l'extension répond, vous pouvez vérifier la variable hasExtension pour déterminer l'état d'installation de l'utilisateur.

Notez que le l'échange de messages est asynchrone, vous devrez donc peut-être implémenter une logique pour gérer le potentiel de retard.

Modifier :

  1. Ajouter une entrée au fichier manifest.json spécifiant les domaines autorisés à envoyer des messages à l'extension :

    "externally_connectable": {
        "matches": ["*://localhost/*", "*://your.domain.com/*"]
    },
  2. Dans le rappel de chrome.runtime.sendMessage, gérez l'erreur potentielle qui peut survenir si l'extension n'est pas installée ou est désactivée :

    if (chrome.runtime.lastError) {
        // handle error 
    }

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn