Erkennen der Installation einer Chrome-Erweiterung in JavaScript
Beim Erstellen einer Chrome-Erweiterung kann es erforderlich sein, festzustellen, ob die Erweiterung von einem aus installiert wird externes JavaScript-Skript. Dies hilft beim Anpassen von Webinhalten basierend auf dem Vorhandensein der Erweiterung.
Laut der Chrome-Dokumentation ist es möglich, dies durch Nachrichtenweitergabe von der Website an die Erweiterung zu erreichen.
Code-Implementierung
Fügen Sie in der Datei „background.js“ (oder einem anderen nicht inhaltsbezogenen Skript) der Erweiterung eine Nachricht hinzu listener:
chrome.runtime.onMessageExternal.addListener( function(request, sender, sendResponse) { if (request) { if (request.message) { if (request.message == "version") { sendResponse({version: 1.0}); } } } return true; } );
Dieser Listener empfängt Nachrichten von der Website.
Senden Sie vom Skript der Website aus eine Nachricht an die ID der Erweiterung:
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; } } );
Überprüfen Sie die Variable hasExtension, um festzustellen, ob die Erweiterung installiert ist.
Manifestkonfiguration
Denken Sie daran, der manifest.json einen Eintrag hinzuzufügen Datei, die die Domänen angibt, die Nachrichten an die Erweiterung senden dürfen:
"externally_connectable": { "matches": ["http://mylocalhostextensiontest/*", "http://*:*/*"] },
Asynchrone Natur und Fehlerbehandlung
Beachten Sie, dass der Nachrichtenübermittlungsmechanismus asynchron ist, daher müssen Sie dies möglicherweise in Ihrem Code behandeln.
Darüber hinaus löst chrome.runtime.sendMessage eine Ausnahme aus, wenn die Erweiterung nicht installiert oder deaktiviert ist. Suchen Sie in solchen Fällen nach dem Senden der Nachricht nach chrome.runtime.lastError:
if (chrome.runtime.lastError) { // Handle the error here... }
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3