Häufig gestellte Fragen

Wenn Sie hier keine Antwort auf Ihre Frage finden, sehen Sie sich die häufig gestellten Fragen zum Chrome Web Store, das [google-chrome-extension]-Tag auf Stack Overflow, die chromium-extensions-Gruppe oder die Store-Hilfe an.

Allgemein

Was sind Google Chrome-Erweiterungen?

Google Chrome-Erweiterungen sind Anwendungen, die im Chrome-Browser ausgeführt werden und zusätzliche Funktionen, die Einbindung in Websites oder Dienste von Drittanbietern sowie benutzerdefinierte Browserfunktionen bieten.

Wie kann ich Chrome für die Entwicklung von Erweiterungen einrichten?

Wenn Sie eine Chrome-Version verwenden, die Erweiterungen unterstützt, haben Sie bereits alles, was Sie brauchen, um eine eigene Erweiterung zu schreiben. Aktivieren Sie dazu zuerst den Entwicklermodus.

Klicken Sie auf das Chrome-Menüsymbol und wählen Sie im Menü Tools die Option Erweiterungen aus. Achten Sie darauf, dass das Kästchen „Entwicklermodus“ oben rechts aktiviert ist. Jetzt können Sie Erweiterungen neu laden, ein entpacktes Verzeichnis mit Dateien wie eine gepackte Erweiterung laden und vieles mehr. Eine vollständige Anleitung finden Sie unter Erste Schritte.

Welche Technologien werden verwendet, um Erweiterungen für Chrome zu entwickeln?

Erweiterungen werden mit den gleichen Standard-Webtechnologien geschrieben, mit denen Entwickler Websites erstellen. HTML wird als Auszeichnungssprache für Inhalte, CSS für Stile und JavaScript für Skripts verwendet. Da Chrome HTML5 und CSS3 unterstützt, können Entwickler die neuesten offenen Webtechnologien wie Canvas- und CSS-Animationen in ihren Erweiterungen nutzen. Erweiterungen haben außerdem Zugriff auf mehrere JavaScript APIs, die Funktionen wie die JSON-Codierung und die Interaktion mit dem Browser ausführen.

Werden Erweiterungen bei jedem Laden des Browsers aus dem Web abgerufen?

Erweiterungen werden vom Chrome-Browser bei der Installation heruntergeladen und anschließend vom lokalen Laufwerk ausgeführt, um die Leistung zu beschleunigen. Wenn jedoch online eine neue Version der Erweiterung bereitgestellt wird, wird sie automatisch im Hintergrund für alle Nutzer heruntergeladen, die die Erweiterung installiert haben. Erweiterungen können auch jederzeit Remote-Inhalte anfordern, um mit einem Webdienst zu interagieren oder neue Inhalte aus dem Web abzurufen.

Wie finde ich heraus, welche Chrome-Version auf welcher Version bereitgestellt wird?

Wenn Sie herausfinden möchten, welche Chrome-Version derzeit auf den verschiedenen Plattformen verfügbar ist, rufen Sie omahaproxy.appspot.com auf. Auf dieser Website werden Daten in einem Format wie dem folgenden angezeigt:

cf,dev,#.#.###.#,#.#.###.#,mm/dd/yy,mm/dd/yy,#####,#####,#####
cf,beta,#.#.###.#,#.#.###.#,mm/dd/yy,mm/dd/yy,#####,#####,#####
cf,stable,#.#.###.#,#.#.###.#,mm/dd/yy,mm/dd/yy,#####,#####,#####
linux,dev,#.#.###.#,#.#.###.#,mm/dd/yy,mm/dd/yy,#####,#####,#####
linux,beta,#.#.###.#,#.#.###.#,mm/dd/yy,mm/dd/yy,#####,#####,#####
linux,stable,#.#.###.#,#.#.###.#,mm/dd/yy,mm/dd/yy,#####,#####,#####
mac,dev,#.#.###.#,#.#.###.#,mm/dd/yy,mm/dd/yy,#####,#####,#####
mac,beta,#.#.###.#,#.#.###.#,mm/dd/yy,mm/dd/yy,#####,#####,#####
mac,stable,#.#.###.#,#.#.###.#,mm/dd/yy,mm/dd/yy,#####,#####,#####
win,canary,#.#.###.#,#.#.###.#,mm/dd/yy,mm/dd/yy,#####,#####,#####
win,dev,#.#.###.#,#.#.###.#,mm/dd/yy,mm/dd/yy,#####,#####,#####
win,beta,#.#.###.#,#.#.###.#,mm/dd/yy,mm/dd/yy,#####,#####,#####
win,stable,#.#.###.#,#.#.###.#,mm/dd/yy,mm/dd/yy,#####,#####,#####
cros,dev,#.#.###.#,#.#.###.#,mm/dd/yy,mm/dd/yy,#####,#####,#####
cros,beta,#.#.###.#,#.#.###.#,mm/dd/yy,mm/dd/yy,#####,#####,#####

Jede Zeile enthält Informationen zu einer anderen Kombination aus Plattform und Channel. Die aufgeführten Plattformen sind cf (Google Chrome Frame), linux, mac, win und cros (Google ChromeOS). Die aufgelisteten Kanäle sind canary, dev, beta und stable. Die beiden vierteiligen Zahlen nach der Version stellen die aktuelle und vorherige Versionen von Chrome dar, die für diese Kombination aus Plattform und Version bereitgestellt wurden. Bei den restlichen Informationen handelt es sich um Metadaten darüber, wann die Releases zum ersten Mal übertragen wurden, sowie zu den mit jedem Build verknüpften Überarbeitungsnummern.

Leistungsspektrum

Können Erweiterungen domainübergreifende Ajax-Anfragen senden?

Ja. Erweiterungen können domainübergreifende Anfragen senden. Weitere Informationen finden Sie auf dieser Seite.

Können Erweiterungen Webdienste von Drittanbietern verwenden?

Ja. Erweiterungen können domainübergreifende Ajax-Anfragen senden und Remote-APIs direkt aufrufen. APIs, die Daten im JSON-Format bereitstellen, sind besonders einfach zu verwenden.

Können Erweiterungen JSON-Daten codieren/decodieren?

Ja. Da V8 (die JavaScript-Engine von Chrome) JSON.stringify und JSON.parse nativ unterstützt, können Sie diese Funktionen wie hier beschrieben in Ihren Erweiterungen verwenden, ohne zusätzliche JSON-Bibliotheken in Ihren Code aufzunehmen.

Können Erweiterungen Daten lokal speichern?

Ja, Erweiterungen können localStorage verwenden, um Stringdaten dauerhaft zu speichern. Mit den integrierten JSON-Funktionen von Chrome können Sie komplexe Datenstrukturen in localStorage speichern. Für Erweiterungen, die SQL-Abfragen für ihre gespeicherten Daten ausführen müssen, implementiert Chrome clientseitige SQL-Datenbanken, die ebenfalls verwendet werden können.

Können Erweiterungen OAuth verwenden?

Ja, es gibt Erweiterungen, die OAuth für den Zugriff auf Remote-Daten-APIs verwenden. Die meisten Entwickler finden es praktisch, eine JavaScript-OAuth-Bibliothek zu verwenden, um das Signieren von OAuth-Anfragen zu vereinfachen.

Können Erweiterungen eine Benutzeroberfläche außerhalb der gerenderten Webseite erstellen?

Ja, Ihre Erweiterung kann Schaltflächen zur Benutzeroberfläche des Chrome-Browsers hinzufügen. Weitere Informationen findest du unter Browseraktionen und Seitenaktionen.

Eine Erweiterung kann auch Pop-up-Benachrichtigungen erstellen, die außerhalb des Browserfensters angezeigt werden. Weitere Informationen finden Sie in der Dokumentation zu Desktopbenachrichtigungen.

Können Erweiterungen Klicks auf Chrome-Tabs und Navigationsschaltflächen erfassen?

Nein. Erweiterungen können nur auf die in der API-Dokumentation beschriebenen Ereignisse warten.

Können zwei Erweiterungen miteinander kommunizieren?

Ja, Erweiterungen können Nachrichten an andere Erweiterungen weiterleiten. Weitere Informationen finden Sie in der Dokumentation zur Nachrichtenübergabe.

Kann Google Analytics für Erweiterungen verwendet werden?

Ja, da Erweiterungen wie Websites erstellt werden, kann die Nutzung mit Google Analytics erfasst werden. Sie müssen jedoch den Tracking-Code ändern, um eine HTTPS-Version der Google Analytics-Bibliothek abzurufen. Weitere Informationen dazu finden Sie in dieser Anleitung.

Können Erweiterungen chrome://-URLs ändern?

Nein. Die Erweiterungs-APIs wurden entwickelt, um die Abwärtskompatibilitätsprobleme zu minimieren, die entstehen können, wenn neue Versionen des Browsers installiert werden. Wenn Sie Inhaltsskripts für chrome://-URLs zulassen, würden Entwickler damit beginnen, sich darauf zu verlassen, dass das DOM, CSS und JavaScript dieser Seiten unverändert bleibt. Im besten Fall könnten diese Seiten nicht so schnell aktualisiert werden, wie sie jetzt gerade aktualisiert werden. Im schlimmsten Fall könnte ein Update einer dieser Seiten dazu führen, dass eine Erweiterung nicht mehr funktioniert, sodass zentrale Teile des Browsers für Nutzer dieser Erweiterung nicht mehr funktionieren.

Das Ersetzen der unter diesen URLs gehosteten Inhalte ist zulässig, weil der Entwickler einer Erweiterung damit gezwungen ist, alle gewünschten Funktionen zu implementieren, ohne dass die interne Implementierung des Browsers gleich bleibt.

Können Erweiterungen Browser-/Seitenaktions-Pop-ups ohne Nutzerinteraktion öffnen?

Nein, Pop-ups können nur geöffnet werden, wenn der Nutzer auf die entsprechende Seite oder Browseraktion klickt. Das Pop-up einer Erweiterung kann das zugehörige Pop-up-Fenster nicht programmatisch öffnen.

Können Erweiterungen Pop-ups geöffnet lassen, nachdem der Nutzer darauf geklickt hat?

Nein. Pop-ups werden automatisch geschlossen, wenn der Nutzer einen Teil des Browsers außerhalb des Pop-ups sieht. Es gibt keine Möglichkeit, das Pop-up geöffnet zu lassen, nachdem der Nutzer weggeklickt hat.

Können Erweiterungen benachrichtigt werden, wenn sie installiert oder deinstalliert werden?

Sie können auf das Ereignis runtime.onInstalled warten, um benachrichtigt zu werden, wenn Ihre Erweiterung installiert oder aktualisiert wird oder wenn Chrome selbst aktualisiert wird. Es gibt kein entsprechendes Ereignis für die Deinstallation Ihrer Erweiterung.

Entwicklung

Wie erstelle ich eine Benutzeroberfläche für meine Erweiterung?

Für Erweiterungen werden die Benutzeroberflächen in HTML und CSS definiert. Sie können also wie bei einer Webseite Standard-Formularsteuerelemente verwenden oder die Oberfläche mit CSS gestalten. Darüber hinaus können Erweiterungen einige eingeschränkte UI-Elemente zu Chrome selbst hinzufügen.

Wie viele Daten kann ich in localStorage speichern?

Erweiterungen können bis zu 5 MB Daten im localStorage speichern.

Wie erstelle ich ein Optionsmenü für meine Anwendung?

Wenn Sie Nutzern erlauben möchten, Optionen für die Erweiterung festzulegen, erstellen Sie eine Optionsseite. Dabei handelt es sich um eine einfache HTML-Seite, die geladen wird, wenn ein Nutzer auf die Schaltfläche "Optionen" für die Erweiterung klickt. Diese Seite kann Einstellungen lesen und in den localStorage schreiben oder sogar Optionen an einen Webserver senden, damit sie browserübergreifend gespeichert werden können.

Welche Debugging-Tools stehen Entwicklern von Erweiterungen zur Verfügung?

Mit den in Chrome integrierten Entwicklertools können Fehler in Erweiterungen und Webseiten behoben werden. Weitere Informationen finden Sie in dieser Anleitung zum Debugging von Erweiterungen.

Warum funktionieren Platzhalter-Übereinstimmungen bei Top-Level-Domains (TLDs) nicht?

Sie können keine Platzhalter-Übereinstimmungsmuster wie http://google.*/* verwenden, um TLDs wie http://google.es und http://google.fr abzugleichen, da eine solche Übereinstimmung nur auf die gewünschten Domains beschränkt ist.

Im Beispiel http://google.*/* werden die Google-Domains abgeglichen, aber auch http://google.someotherdomain.com. Außerdem besitzen viele Websites nicht alle TLDs für ihre Domain. Angenommen, Sie möchten http://example.*/* für http://example.com und http://example.es verwenden, aber http://example.net ist eine schädliche Website. Wenn Ihre Erweiterung einen Fehler hat, könnte die schädliche Website Ihre Erweiterung angreifen, um Zugriff auf die erweiterten Berechtigungen der Erweiterung zu erhalten.

Sie sollten die TLDs, auf denen Sie Ihre Erweiterung ausführen möchten, explizit angeben.

Warum löst die Management API keine Ereignisse aus, wenn meine Erweiterung installiert/deinstalliert ist?

Die Verwaltungs-API sollte die Erstellung von Ersatzerweiterungen für "Neuer Tab"-Seiten unterstützen. Die aktuelle Erweiterung sollte keine Installations- oder Deinstallationsereignisse auslösen.

Wie kann eine Erweiterung feststellen, ob sie zum ersten Mal ausgeführt wird?

Sie können das Ereignis runtime.onInstalled überwachen. Weitere Informationen finden Sie in diesem FAQ-Eintrag.

Funktionen und Programmfehler

Ich glaube, ich habe einen Fehler gefunden! Wie kann ich sicherstellen, dass das Problem behoben wird?

Bei der Entwicklung einer Erweiterung kann es vorkommen, dass ein Verhalten auftritt, das nicht der Dokumentation zu Erweiterungen entspricht und das Ergebnis eines Programmfehlers in Chrome sein kann. Stellen Sie am besten sicher, dass ein geeigneter Problembericht eingereicht wird und das Chromium-Team über genügend Informationen verfügt, um das Verhalten zu reproduzieren.

Gehen Sie dazu so vor:

  1. Überlegen Sie sich eine minimale Testerweiterung, die das Problem zeigt, das Sie melden möchten. Diese Erweiterung sollte so wenig Code wie möglich enthalten, um den Fehler zu veranschaulichen. Im Allgemeinen sollten dies maximal 100 Codezeilen sein. Oftmals stellen Entwickler fest, dass sie ihre Probleme auf diese Weise nicht reproduzieren können, was ein guter Hinweis darauf ist, dass der Fehler in ihrem eigenen Code liegt.
  2. Suchen Sie im Issue Tracker unter http://crbug.com nach, ob ein ähnliches Problem gemeldet wurde. Die meisten Probleme im Zusammenhang mit Erweiterungen werden unter component=Platform>Extensions aufgeführt. Wenn Sie beispielsweise nach einem Erweiterungsfehler im Zusammenhang mit der Funktion chrome.tabs.executeScript suchen, suchen Sie nach „component=Platform>Extensions Type=Bug chrome.tabs.executeScript“. Sie erhalten dann diese Ergebnisliste.
  3. Wenn Sie einen Fehler finden, der Ihr Problem beschreibt, klicken Sie auf das Sternsymbol, um benachrichtigt zu werden, wenn der Fehler ein Update erhält. Reagieren Sie nicht auf den Fehler und sagen Sie nicht „Ich auch“ oder fragen Sie „Wann wird das Problem behoben?. Solche Aktualisierungen können dazu führen, dass Hunderte von E-Mails gesendet werden. Fügen Sie nur dann einen Kommentar hinzu, wenn Sie Informationen haben, die hilfreich sein könnten, z. B. einen besseren Testlauf oder eine vorgeschlagene Korrektur.
  4. Wenn Sie keinen geeigneten Fehler gefunden haben, können Sie unter http://crbug.com/new einen neuen Problembericht einreichen. Füllen Sie dieses Formular so präzise wie möglich aus: Wählen Sie einen aussagekräftigen Titel, erklären Sie die Schritte zum Reproduzieren des Fehlers und beschreiben Sie das erwartete und tatsächliche Verhalten. Hängen Sie Ihr Testbeispiel an den Bericht an und fügen Sie gegebenenfalls Screenshots hinzu. Je einfacher Ihr Bericht es anderen macht, Ihr Problem zu reproduzieren, desto höher ist die Wahrscheinlichkeit, dass der Fehler umgehend behoben wird.
  5. Warten Sie, bis der Fehler aktualisiert wurde. Die meisten neuen Fehler werden innerhalb einer Woche gesichtet, obwohl ein Update manchmal auch länger dauern kann. Antworten Sie nicht auf den Fehler, um zu fragen, wann das Problem behoben ist. Wenn Ihr Fehler nach zwei Wochen nicht geändert wurde, posten Sie eine Nachricht in der Diskussionsgruppe und geben Sie einen Link zum Fehler an.
  6. Wenn Sie den Fehler ursprünglich in der Diskussionsgruppe gemeldet haben und zu diesem FAQ-Eintrag weitergeleitet wurden, antworten Sie auf Ihren ursprünglichen Thread mit einem Link zu dem Fehler, den Sie markiert oder gemeldet haben. So können andere, die dasselbe Problem haben, leichter den richtigen Fehler finden.

Ich habe eine Funktionsanfrage! Wie kann ich das melden?

Wenn Sie eine Funktion finden, die zur Verbesserung der Entwicklung von Erweiterungen hinzugefügt werden könnte (insbesondere wenn sie mit einer experimentellen API verknüpft ist), sollten Sie in der Problemverfolgung eine entsprechende Anfrage stellen.

Gehen Sie dazu so vor:

  1. Suchen Sie im Issue Tracker unter http://crbug.com, ob jemand eine ähnliche Funktion angefordert hat. Die meisten Anfragen im Zusammenhang mit Erweiterungen werden unter component=Platform>Erweiterungen gespeichert. Wenn Sie beispielsweise nach einer Erweiterungsfunktion für Tastenkombinationen suchen möchten, suchen Sie nach „component=Platform>Extensions Type=Feature shortcuts“. Sie erhalten dann diese Ergebnisliste.
  2. Wenn Sie ein Ticket finden, das Ihrer Anfrage entspricht, klicken Sie auf das Sternsymbol, um benachrichtigt zu werden, wenn der Fehler ein Update erhält. Reagieren Sie nicht auf den Programmfehler und sagen Sie nicht „Ich auch“ oder „Wann wird das implementiert?“. Solche Aktualisierungen können dazu führen, dass Hunderte von E-Mails gesendet werden.
  3. Wenn Sie kein passendes Ticket zum Markieren gefunden haben, reichen Sie unter http://crbug.com/new eine neue Anfrage ein. Geben Sie beim Ausfüllen dieses Formulars so viele Details wie möglich an: Wählen Sie einen aussagekräftigen Titel und erklären Sie genau, welche Funktion Sie sich wünschen und wie Sie sie nutzen möchten.
  4. Warten Sie, bis das Ticket aktualisiert wurde. Die meisten neuen Anfragen werden innerhalb einer Woche gesichtet. Manchmal kann die Aktualisierung aber auch länger dauern. Antworten Sie nicht auf das Ticket, um zu fragen, wann die Funktion hinzugefügt wird. Wenn Ihr Ticket nach zwei Wochen nicht geändert wurde, posten Sie eine Nachricht an die Diskussionsgruppe und geben Sie einen Link zu Ihrer Anfrage an.
  5. Wenn Sie Ihre Anfrage ursprünglich in der Diskussionsgruppe gemeldet haben und zu diesem FAQ-Eintrag weitergeleitet wurden, antworten Sie auf Ihren ursprünglichen Thread mit einem Link zu dem Ticket, das Sie markiert oder geöffnet haben. So können andere Nutzer mit der gleichen Anfrage leichter das richtige Ticket finden.