Erstellen Sie die erste Erweiterung, mit der ein neues Element auf der Seite eingefügt wird.
Überblick
In dieser Anleitung wird eine Erweiterung erstellt, mit der die voraussichtliche Lesezeit jeder Chrome-Erweiterung und Dokumentationsseite im Chrome Web Store hinzugefügt wird.
![Lesezeitverlängerung auf der Begrüßungsseite der Erweiterung](https://developer.chrome.google.cn/static/docs/extensions/get-started/tutorial/scripts-on-every-tab/image/reading-extension-the-e-0070620f12665.png?authuser=6&hl=de)
In diesem Leitfaden werden die folgenden Konzepte erläutert:
- Das Manifest der Erweiterung.
- Die von einer Erweiterung verwendeten Symbolgrößen.
- Das Einfügen von Code in Seiten mithilfe von Content-Skripts.
- Abgleichsmuster verwenden
- Erweiterungsberechtigungen.
Vorbereitung
In diesem Leitfaden wird davon ausgegangen, dass Sie über Grundkenntnisse in der Webentwicklung verfügen. Wir empfehlen die Anleitung Hello World, um eine Einführung in den Workflow zur Entwicklung von Erweiterungen zu erhalten.
Erweiterung erstellen
Erstellen Sie zuerst ein neues Verzeichnis mit dem Namen reading-time
, in dem die Dateien der Erweiterung gespeichert werden. Wenn Sie möchten, können Sie den vollständigen Quellcode von GitHub herunterladen.
Schritt 1: Informationen zur Erweiterung hinzufügen
Die JSON-Manifestdatei ist die einzige erforderliche Datei. Sie enthält wichtige Informationen zur Erweiterung. Erstellen Sie eine manifest.json
-Datei im Stammverzeichnis des Projekts und fügen Sie den folgenden Code hinzu:
{
"manifest_version": 3,
"name": "Reading time",
"version": "1.0",
"description": "Add the reading time to Chrome Extension documentation articles"
}
Diese Schlüssel enthalten grundlegende Metadaten für die Erweiterung. Sie steuern, wie die Erweiterung auf der Seite „Erweiterungen“ und bei der Veröffentlichung im Chrome Web Store angezeigt wird. Weitere Informationen findest du in den Schlüsseln "name"
, "version"
und "description"
auf der Übersichtsseite Manifest.
💡 Weitere Informationen zum Manifest der Erweiterung
- Sie muss sich im Stammverzeichnis des Projekts befinden.
- Die einzigen erforderlichen Schlüssel sind
"manifest_version"
,"name"
und"version"
. - Kommentare (
//
) werden während der Entwicklung unterstützt. Diese müssen jedoch entfernt werden, bevor Sie Ihren Code in den Chrome Web Store hochladen.
Schritt 2: Symbole bereitstellen
Warum brauchen Sie also Symbole? Symbole sind während der Entwicklung optional. Sie sind aber erforderlich, wenn Sie Ihre Erweiterung über den Chrome Web Store vertreiben möchten. Sie werden auch an anderen Stellen angezeigt, z. B. auf der Seite zur Verwaltung von Erweiterungen.
Erstellen Sie einen images
-Ordner und platzieren Sie die Symbole darin. Sie können die Symbole von GitHub herunterladen. Fügen Sie als Nächstes den hervorgehobenen Code in Ihr Manifest ein, um Symbole zu deklarieren:
{
"icons": {
"16": "images/icon-16.png",
"32": "images/icon-32.png",
"48": "images/icon-48.png",
"128": "images/icon-128.png"
}
}
Wir empfehlen die Verwendung von PNG-Dateien. Mit Ausnahme von SVG-Dateien sind jedoch auch andere Dateiformate zulässig.
💡 Wo werden diese Symbole in unterschiedlicher Größe angezeigt?
Symbolgröße | Verwendung von Symbolen |
---|---|
16x16 | Favicon auf den Seiten und im Kontextmenü der Erweiterung |
32x32 | Windows-Computer benötigen diese Größe häufig. |
48x48 | Wird auf der Seite „Erweiterungen“ angezeigt. |
128 × 128 | Wird bei der Installation und im Chrome Web Store angezeigt. |
Schritt 3: Inhaltsskript deklarieren
Erweiterungen können Skripts ausführen, die den Inhalt einer Seite lesen und ändern. Diese werden als Content-Skripts bezeichnet. Sie leben in einer isolierten Welt, d. h. sie können Änderungen an ihrer JavaScript-Umgebung vornehmen, ohne mit den Content-Skripts ihrer Hostseite oder anderer Erweiterungen in Konflikt zu stehen.
Fügen Sie manifest.json
den folgenden Code hinzu, um ein Inhaltsskript namens content.js
zu registrieren.
{
"content_scripts": [
{
"js": ["scripts/content.js"],
"matches": [
"https://developer.chrome.com/docs/extensions/*",
"https://developer.chrome.com/docs/webstore/*"
]
}
]
}
Das Feld "matches"
kann ein oder mehrere Übereinstimmungsmuster enthalten. Dadurch kann der Browser erkennen, auf welchen Websites die Inhaltsskripte eingefügt werden sollen. Übereinstimmungsmuster bestehen aus drei Teilen: <scheme>://<host><path>
. Sie dürfen „*
“-Zeichen enthalten.
💡 Zeigt diese Erweiterung eine Berechtigungswarnung an?
Wenn ein Nutzer eine Erweiterung installiert, wird der Browser darüber informiert, welche Aktionen die Erweiterung ausführen kann. Inhaltsskripte fordern die Berechtigung zur Ausführung auf Websites an, die die Kriterien für Übereinstimmungsmuster erfüllen.
In diesem Beispiel wird dem Nutzer die folgende Berechtigungswarnung angezeigt:
![Berechtigungswarnung, die der Nutzer sieht, wenn die Erweiterung „Lesezeit“ installiert wird](https://developer.chrome.google.cn/static/docs/extensions/get-started/tutorial/scripts-on-every-tab/image/permission-warning-user-af0cb023a0128.png?authuser=6&hl=de)
Weitere Informationen zu Erweiterungsberechtigungen finden Sie unter Berechtigungen deklarieren und Nutzer warnen.
Schritt 4: Lesezeit berechnen und einfügen
Inhaltsskripte können das standardmäßige Document Object Model (DOM) verwenden, um den Inhalt einer Seite zu lesen und zu ändern. Die Erweiterung prüft zuerst, ob die Seite das <article>
-Element enthält.
Dann werden alle Wörter in diesem Element gezählt und ein Absatz erstellt, der die Gesamtlesezeit anzeigt.
Erstellen Sie eine Datei mit dem Namen content.js
in einem Ordner namens scripts
und fügen Sie den folgenden Code hinzu:
const article = document.querySelector("article");
// `document.querySelector` may return null if the selector doesn't match anything.
if (article) {
const text = article.textContent;
const wordMatchRegExp = /[^\s]+/g; // Regular expression
const words = text.matchAll(wordMatchRegExp);
// matchAll returns an iterator, convert to array to get word count
const wordCount = [...words].length;
const readingTime = Math.round(wordCount / 200);
const badge = document.createElement("p");
// Use the same styling as the publish information in an article's header
badge.classList.add("color-secondary-text", "type--caption");
badge.textContent = `⏱️ ${readingTime} min read`;
// Support for API reference docs
const heading = article.querySelector("h1");
// Support for article docs with date
const date = article.querySelector("time")?.parentNode;
(date ?? heading).insertAdjacentElement("afterend", badge);
}
💡 Interessanter JavaScript-Code, der in diesem Code verwendet wird
- Reguläre Ausdrücke, die verwendet werden, um nur die Wörter im
<article>
-Element zu zählen. insertAdjacentElement()
wird verwendet, um den Lesezeitknoten nach dem Element einzufügen.- Die Eigenschaft classList, die verwendet wird, um dem Attribut „Elementklasse“ CSS-Klassennamen hinzuzufügen.
- Optionale Verkettung für den Zugriff auf ein Objektattribut, das nicht definiert oder null ist.
- Nullish coalescing gibt den
<heading>
zurück, wenn<date>
null oder nicht definiert ist.
Testen, ob es funktioniert
Prüfen Sie, ob die Dateistruktur Ihres Projekts so aussieht:
Erweiterung lokal laden
Führen Sie zum Laden einer entpackten Erweiterung im Entwicklermodus die Schritte in Entwicklungsgrundlagen aus.
Erweiterung oder Chrome Web Store-Dokumentation öffnen
Hier sind einige Seiten, die Sie öffnen können, um zu sehen, wie lange es dauert, einen Artikel zu lesen.
Das sollte so aussehen:
![Laufende Lesezeit auf der Begrüßungsseite](https://developer.chrome.google.cn/static/docs/extensions/get-started/tutorial/scripts-on-every-tab/image/reading-running-the-wel-1d750346edcea.png?authuser=6&hl=de)
🎯 Mögliche Verbesserungen
Versuchen Sie basierend auf dem, was Sie heute gelernt haben, Folgendes umzusetzen:
- Fügen Sie in der Datei „manifest.json“ ein weiteres Übereinstimmungsmuster hinzu, um andere Chrome-Entwicklerseiten zu unterstützen, z. B. die Chrome-Entwicklertools oder die Workbox.
- Fügen Sie ein neues Inhaltsskript hinzu, mit dem die Lesezeit für Ihre bevorzugten Blogs oder Dokumentationswebsites berechnet wird.
Weiter erstellen
Herzlichen Glückwunsch! Sie haben dieses Tutorial abgeschlossen. 🎉. Wenn Sie weitere Anleitungen aus dieser Reihe durchgehen, können Sie Ihre Fähigkeiten weiter ausbauen:
Erweiterung | Lerninhalte |
---|---|
Konzentrationsmodus | Um Code auf der aktuellen Seite auszuführen, nachdem Sie auf die Erweiterungsaktion geklickt haben. |
Tabs-Manager | So erstellen Sie ein Pop-up, das Browsertabs verwaltet |
Weiter erkunden
Wir hoffen, dass Ihnen die Entwicklung dieser Chrome-Erweiterung Spaß gemacht hat, und freuen uns auf die weitere Entwicklung von Chrome. Wir empfehlen den folgenden Lernpfad:
- Das Entwicklerhandbuch enthält Dutzende zusätzliche Links zu Dokumentationen, die für das Erstellen erweiterter Erweiterungen relevant sind.
- Erweiterungen haben Zugriff auf leistungsstarke APIs, die über das Angebot im offenen Web hinausgehen. In der Dokumentation zu Chrome APIs werden die einzelnen APIs erläutert.