Browser Extensions (englisch fürBrowser-Erweiterungen, auchWebExtensions genannt) ist ein Standard fürBrowsererweiterungen, der in den meisten aktuellenWebbrowsern umgesetzt wird. Das Format basiert auf den Erweiterungen fürGoogle Chrome, wird inzwischen aber auch von anderen Browsern unterstützt und gemeinsam weiterentwickelt.
Der Standard nutzt als Bezeichnung den generischen NamenBrowser Extensions. Opera-Entwickler bevorzugenNavigator Extensions, während Mozilla den BegriffWebExtensions verwendet.
Lange Zeit hatte jeder Browser sein eigenes Format für Erweiterungen, lediglich sehr eng verwandte Browser nutzten das gleiche Format. Für Chrome entwickelte Google ein eigenes Erweiterungsformat, das vollständig auf Webtechnologien basiert.
AlsOpera 2013 mit der Version 15 zurBrowser-EngineBlink wechselte, wurde auch Unterstützung für Googles Browsererweiterungen mit einigen Opera-spezifischen Zusätzen eingeführt, gleichzeitig äußerten Opera-Entwickler die Idee, das Format zu einem browserübergreifenden Standard zu machen.[1]
Drei Jahre später, im Mai 2016, gründeten Opera, Microsoft und Mozilla dieExtensions Community Group, um das Format zu spezifizieren.[2]
Kurz darauf führte Microsoft die Unterstützung mitEdge 10 ein,[3] zeitgleich erreichte Mozillas Implementierung mitFirefox 48 einen stabilen Status.[4]
Seit Ende 2017 sind mit Firefox 57WebExtensions das einzige unterstützte Erweiterungsformat in Firefox.[5] Das führte zur Entwicklung vonWaterFox undCyberFox, auf Firefox 52 ESR-basierende Alternativen, mit dem Ziel, die Abwärtskompatibilität zum alten Add-On-Format beizubehalten.
Ziel des Standards ist es zunächst, ein gemeinsames Format und die wichtigstenProgrammierschnittstellen (APIs) zu spezifizieren. Damit soll es möglich sein, Browsererweiterungen zu schreiben, die entweder direkt in allen Browsern funktionieren, oder zumindest aus einer gemeinsamenCodebasis direkt für alle Browser erstellt werden können. Über den Standard hinaus können Browser eigene APIs implementieren, die dann von Erweiterungen in diesem Browser genutzt werden können.
Browsererweiterungen bestehen aus mehreren Dateien, die üblicherweise in einemZIP-Container zusammengefasst werden. Die zentrale Datei ist dabeimanifest.json, eine Datei imJSON-Format mit wichtigen Daten über die Erweiterung. Neben allgemeinen Metadaten wie dem Namen der Erweiterung und Angaben zum Entwickler enthält diese Datei auch dieBerechtigungen, die für die Erweiterung notwendig sind, und sie gibt an, in welcher Situation welcher Code ausgeführt werden soll. Wenn beispielsweise auf allen Seiten vonWikipedia ein bestimmter Code ausgeführt werden soll, so kann er mit folgendem Eintrag in der Manifest-Datei festgelegt werden:
"content_scripts":[{"matches":["https://*.wikipedia.org/*"],"js":["code.js"]}]
Der Code selbst ist inJavaScript geschrieben, zudem kommenHTML undCSS zum Einsatz, beispielsweise für Konfigurationsseiten. Neben den üblichen APIs, die allen Webseiten zur Verfügung stehen, kann die Erweiterung über das globalebrowser-Objekt je nach erteilten Berechtigungen mit dem Browser und der aufgerufenen Seite interagieren. So kann eine Erweiterung mit dem folgenden Code einLesezeichen anlegen, vorausgesetzt sie besitzt die Berechtigung dazu:
browser.bookmarks.create({title:'Wikipedia',url:'https://de.wikipedia.org/wiki/Wikipedia:Hauptseite'});
Unterschiedliche Browser stellen unterschiedliche APIs zur Verfügung, zum einen, weil einige Schnittstellen erst noch implementiert werden müssen, zum anderen, weil bestimmte Funktionen in einigen Browsern grundsätzlich nicht vorgesehen sind. So gibt es die API, um eineSeitenleiste zu implementieren, nur in Browsern, die Seitenleisten auch tatsächlich verwenden, und fehlt in anderen Browsern. Wie für Webseiten üblich können solche Unterschiede zwischen den Browsern am Vorhandensein oder Fehlen der entsprechenden Methoden erkannt und geeignet behandelt werden. Ebenso gibt esPolyfills, die die Unterschiede zwischen den Browsern ausgleichen.
DamitSicherheitslücken in Browsererweiterungen nicht so leicht zur Einschleusung von Schadcode genutzt werden können, gelten für Erweiterungen strengeCSP-Regeln, die allerdings bei Bedarf auch gelockert werden können. Zudem gilt die üblicheSame-Origin-Policy, eine Erweiterung kann also nur ihre eigenen Daten lesen. Auch diese Einschränkung kann bei Bedarf aufgehoben oder gelockert werden. Über den Standard hinaus fordern Browser zudem in der Regel, dass die Erweiterung einedigitale Signatur enthält.
Google Chrome unterstützt diese Browsererweiterungen ab Version 4, allerdings in der ursprünglichen eigenen Variante. Insbesondere heißt das globale Objekt nichtbrowser, sondernchrome. Die ZIP-Datei wird mit einem speziellen Header versehen und nutzt als Dateiendungcrx fürChrome Extension.[6]
Opera unterstützt das Format ab Version 15 und verwendet neben demchrome-Objekt auch das globale Objektopr für eigene APIs. Als Dateiendung kommt bei Operanex fürNavigator Extension zum Einsatz. Die Implementierung ist weitgehend kompatibel zu Google Chrome, mit nur wenigen fehlenden APIs und einigen zusätzlichen Funktionen.[7]
Firefox führte eine Unterstützung schrittweise ab Version 42 ein[8] und baute den Umfang mit den folgenden Versionen kontinuierlich aus. Der Zugriff auf die APIs kann sowohl über das globalebrowser-Objekt als auch überchrome erfolgen. Die Mehrheit der vorhandenen Chrome-Erweiterungen funktioniert auch in Firefox.[9][10] Als Dateiendung wird wie für bisherige Firefox-Erweiterungen weiterhinxpi verwendet.
Microsoft Edge implementiert den Standard ab Version 14 und bietet ein automatisches Konvertierungswerkzeug an, mit dem für Chrome geschriebene Erweiterungen auch für Edge einsatzfähig gemacht werden können.[11]
Browser-Erweiterungen können Google Chrome verändern. Sie werden in der Desktop-Version des Browsers unterstützt,[12] jedoch nicht in der mobilen Version.[13] Diese Erweiterungen sind mit Webtechnologien wie HTML, JavaScript und CSS geschrieben.[14] Sie werden über den Chrome Web Store vertrieben, der ursprünglich als Google Chrome Extensions Gallery bekannt war. Einige Erweiterungen konzentrieren sich darauf, Barrierefreiheitsfunktionen bereitzustellen. Google Tone ist eine von Google entwickelte Erweiterung, die bei Aktivierung die Lautsprecher des Computers nutzen kann, um URLs mit nahegelegenen Computern mit Internetverbindung zu teilen, die die Erweiterung ebenfalls aktiviert haben.[15]
Am 9. September 2009 hat Google Erweiterungen standardmäßig im Chrome-Entwicklungskanal aktiviert und einige Mustererweiterungen zum Testen zur Verfügung gestellt.[16][17] Im Dezember begann die Beta-Version der Google Chrome Extensions Gallery mit etwa 300 Erweiterungen. Sie wurde am 25. Januar 2010 zusammen mit Google Chrome 4.0 gestartet und enthielt etwa 1500 Erweiterungen.
Im Jahr 2014 begann Google, einigen Windows-Nutzern das Installieren von nicht im Chrome Web Store gehosteten Erweiterungen zu verbieten.[18] Im folgenden Jahr berichtete Google über eine „75%ige Verringerung der Anfragen zur Unterstützung bei der Deinstallation unerwünschter Erweiterungen im Kundenservice“, was dazu führte, dass diese Beschränkung auf alle Windows- und Mac-Nutzer ausgeweitet wurde.
In Chrome, wenn keine Internetverbindung besteht und die Fehlermeldung „Kein Internet“ angezeigt wird, erscheint oben ein „8-Bit“-Tyrannosaurus Rex, aber wenn die Leertaste auf der Tastatur gedrückt, darauf mit der Maus geklickt oder auf Touch-Geräten berührt wird, springt der Tyrannosaurus sofort einmal und läuft durch eine Wüste voller Kakteen und zeigt damit, dass es sich um ein Osterei in Form eines Plattformspiels handelt. Das Ziel ist es, so lange wie möglich zu überleben.[19] Das Spiel selbst ist ein Endlosläufer, und das Spiel hat keine zeitliche Begrenzung, da es schneller wird und periodisch auf einem schwarzen Hintergrund wechselt. Ein Schul- oder Unternehmensadministrator kann das Spiel deaktivieren.[20][21]