Détermination de l'état d'installation de l'extension Chrome à partir d'un script externe
Lors du développement d'une extension Chrome qui interagit avec des scripts JavaScript externes, vous devrez peut-être vérifier si votre extension est installée sur le navigateur d'un utilisateur. Cette fonctionnalité vous permet d'adapter le comportement de votre script en conséquence.
Chrome a introduit une fonctionnalité qui permet aux sites Web externes de communiquer avec des extensions. En incorporant le code suivant dans le script d'arrière-plan de votre extension (background.js), vous pouvez établir un canal de communication :
chrome.runtime.onMessageExternal.addListener( function(request, sender, sendResponse) { if (request) { if (request.message) { if (request.message == "version") { sendResponse({version: 1.0}); } } } return true; });
Depuis le site Web externe, vous pouvez lancer un message vers l'extension comme suit :
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; } });
Ce script vérifiera la présence de votre extension et attribuera une valeur à la variable hasExtension. La seule limitation est la nature asynchrone de la requête, que vous devrez prendre en compte dans votre implémentation.
N'oubliez pas d'ajouter une entrée au fichier manifest.json de votre extension pour spécifier les domaines avec lesquels communiquer en utilisant la syntaxe suivante :
"externally_connectable": { "matches": ["*://localhost/*", "*://your.domain.com/*"] },
Mise à jour 2021 :
Lors de l'appel de chrome.runtime.sendMessage, une exception sera levée si l'extension n'est pas installée ou handicapé. Pour gérer cette situation, ajoutez la validation suivante dans le rappel sendMessage :
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!