Détection de l'installation d'une extension Chrome dans JavaScript
Lors de la création d'une extension Chrome, il peut s'avérer nécessaire de déterminer si l'extension est installée à partir d'un script JavaScript externe. Cela facilite la personnalisation du contenu Web en fonction de la présence de l'extension.
Selon la documentation de Chrome, il est possible d'y parvenir via la transmission de messages du site Web à l'extension.
Implémentation du code
Dans le fichier background.js de l'extension (ou tout autre script sans contenu), ajoutez un message écouteur :
chrome.runtime.onMessageExternal.addListener( function(request, sender, sendResponse) { if (request) { if (request.message) { if (request.message == "version") { sendResponse({version: 1.0}); } } } return true; } );
Cet auditeur recevra des messages du site Web.
À partir du script du site Web, envoyez un message à l'ID de l'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; } } );
Vérifiez la variable hasExtension pour déterminer si l'extension est installée.
Configuration du manifeste
N'oubliez pas d'ajouter une entrée au manifest.json fichier, spécifiant les domaines autorisés à envoyer des messages à l'extension :
"externally_connectable": { "matches": ["http://mylocalhostextensiontest/*", "http://*:*/*"] },
Nature asynchrone et gestion des erreurs
Notez que le mécanisme de transmission des messages est asynchrone, vous devrez donc peut-être gérer cela dans votre code.
De plus, si l'extension n'est pas installée ou désactivée, chrome.runtime.sendMessage lèvera une exception. Dans de tels cas, recherchez chrome.runtime.lastError après avoir envoyé le message :
if (chrome.runtime.lastError) { // Handle the error here... }
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3