Erweiterungsaktionen in Manifest V3

Seit der Einführung der Chrome-Erweiterungen bietet die Plattform Entwicklern die Möglichkeit, Erweiterungen direkt in der übergeordneten Chrome-Benutzeroberfläche über Aktionen. Eine Aktion ist eine Symbolschaltfläche, ein Pop-up öffnen oder bestimmte Funktionen in der Erweiterung auslösen. In der Vergangenheit unterstützte Chrome Arten von Aktionen sowie Browser- und Seitenaktionen; Dies änderte sich durch Manifest V3, der neuen chrome.action API.

Kurzer Verlauf der Erweiterungsaktionen

Auch wenn chrome.action in Manifest V3 neu ist, gibt es grundlegende Funktionen, die schon seit bis die Erweiterungen im Januar 2010 in der stabilen Version erschienen. Die erste stabile Version der Erweiterungsplattform von Chrome unterstützt zwei verschiedene Arten von Aktionen: Browser Aktionen und Seitenaktionen.

Mithilfe von Browseraktionen konnten Entwickler von Erweiterungen ein Symbol in der Google Chrome-Symbolleiste anzeigen, rechts neben der Adressleiste" (Quelle) und bietet Nutzern eine einfache Möglichkeit, um Erweiterungsfunktionen auf jeder Seite auszulösen. Seitenaktionen hingegen waren dazu gedacht, „Aktionen darstellen, die auf der aktuellen Seite ausgeführt werden können, aber nicht auf alle Seiten zutreffen“ (Quelle)

In der Omnibox wird links eine Seitenaktion angezeigt, die darauf hinweist, dass die Erweiterung auf dieser Seite Aktionen ausführen kann. Eine Browseraktion (rechts) ist immer sichtbar.

Anders ausgedrückt: Durch Browseraktionen erhielten die Entwickler von Erweiterungen eine dauerhafte UI-Oberfläche im Browser. Seitenaktionen werden hingegen nur angezeigt, wenn die Erweiterung auf der aktuellen Seite eine sinnvolle Funktion ausführen konnte.

Beide Arten von Aktionen waren optional. Entwickler der Erweiterung konnten also entweder keine Aktionen, Seitenaktionen oder Browseraktionen (die Angabe mehrerer Aktionen ist nicht zulässig).

Etwa sechs Jahre später führte Chrome 49 ein neues UI-Modell für Erweiterungen ein. Um Ihnen dabei zu helfen, damit Nutzer verstehen, welche Erweiterungen sie hatten, zeigt Chrome nun alle aktiven Erweiterungen rechts neben der Omnibox. Nutzer könnten überlaufen Erweiterungen im Chrome-Menü hinzufügen.

Ausgeblendete Erweiterungssymbole werden dann im Chrome-Menü angezeigt.

Um für jede Erweiterung ein Symbol anzuzeigen, wurden mit dieser Aktualisierung auch zwei wichtige Änderungen zur wie sich Erweiterungen auf der Benutzeroberfläche von Chrome verhalten. Zunächst zeigten alle Erweiterungen Symbole in der Symbolleiste an. Wenn die Erweiterung kein Symbol hätte, generiert Chrome automatisch eines dafür. Zweitens: Seitenaktionen neben den Browseraktionen in die Symbolleiste verschoben und erhielten die Möglichkeit, zwischen ihrer „Serie“ und „Ausblenden“ Bundesländer.

Eine deaktivierte Seitenaktion (links) wird in der Symbolleiste als Graustufenbild gerendert, während eine aktivierte Seitenaktion (rechts) in Vollfarbe angezeigt wird.

Durch diese Änderung konnten Seiten-Aktionserweiterungen weiterhin wie erwartet funktionieren, es hat sich aber auch verschlechtert die Rolle von Seitenaktionen im Zeitverlauf. Eine der Auswirkungen der Neugestaltung der Benutzeroberfläche war, dass die Seitenaktionen Browseraktionen effektiv zusammengefasst. Da alle Erweiterungen in der Symbolleiste angezeigt wurden, kamen die Nutzer erwarten, dass durch Klicken auf das Symbolleistensymbol der Erweiterung die Erweiterung und Browseraktionen aufgerufen werden. wurde für Chrome-Erweiterungen zu einer immer wichtigeren Interaktionsmethode.

Änderungen an Manifest V3

Die Benutzeroberfläche und die Erweiterungen von Chrome haben sich in den Jahren nach der Erweiterungs-UI von 2016 weiterentwickelt. umgestaltet, aber die Browser- und Seitenaktionen blieben weitgehend unverändert. Das heißt, mindestens bis haben wir mit der Planung einer Modernisierung der Erweiterungsplattform mit Manifest V3 begonnen.

Dem Team für Erweiterungen wurde klar, dass Browser- und Seitenaktionen ohne Bedeutung zu unterscheiden. Schlimmer noch, die subtile Unterschiede im Verhalten erschwerten es Entwicklern, um zu entscheiden, welche Sie verwenden möchten. Wir erkannten, dass wir diese Probleme lösen konnten, indem wir die Browser Aktion und Seitenaktion in einer einzigen „Aktion“ zusammengefasst.

Geben Sie die Action API ein. chrome.action entspricht am besten chrome.browserAction, entspricht jedoch weist einige nennenswerte Unterschiede auf.

Zuerst wird mit chrome.action eine neue Methode mit dem Namen getUserSettings() eingeführt. Diese Methode Erweiterungsentwickler können prüfen, ob der Nutzer die Aktion ihrer Erweiterung an die in der Symbolleiste.

let userSettings = await chrome.action.getUserSettings();
console.log(`Is the action pinned? ${userSettings.isOnToolbar ? 'Yes' : 'No'}.`);

"getUserSettings" mag ein ungewöhnlicher Name für diese Funktion erscheinen, „isPinned“ ist, aber der Aktionsverlauf in Chrome zeigt, dass sich die Benutzeroberfläche des Browsers schneller ändert als Erweiterungs-APIs. Daher möchten wir mit dieser API aktionsbezogene Nutzereinstellungen auf generische Schnittstellen, um die zukünftige API-Abwanderung zu minimieren. Außerdem können andere Browseranbieter browserspezifische UI-Konzepte im Objekt UserSettings, die von diesem .

Zweitens können das Symbol und der Aktivierungs-/Deaktivierungsstatus der Aktion einer Erweiterung über die Deklarative Content API Das ist wichtig, weil Erweiterungen so auf die Browseraktivitäten des Nutzers reagieren können. ohne auf die Inhalte oder die URLs der besuchten Seiten zuzugreifen. Lassen Sie uns zum Beispiel Erfahren Sie, wie eine Erweiterung ihre Aktion aktivieren kann, wenn ein Nutzer Seiten auf example.com besucht.

// Manifest V3
chrome.runtime.onInstalled.addListener(() => {
  chrome.declarativeContent.onPageChanged.removeRules(undefined, () => {
    chrome.declarativeContent.onPageChanged.addRules([
      {
        conditions: [
          new chrome.declarativeContent.PageStateMatcher({
            pageUrl: {hostSuffix: '.example.com'},
          })
        ],
        actions: [new chrome.declarativeContent.ShowAction()]
      }
    ]);
  });
});

Der obige Code ist fast identisch mit dem, was eine Erweiterung bei einer Seitenaktion tun würde. Die einzige dass wir in Manifest V3 declarativeContent.ShowAction anstelle von declarativeContent.ShowPageAction in Manifest V2.

Schließlich können Inhaltsblocker die APIs deklarativeNetRequest setExtensionActionOptions), um die Anzahl der von der Erweiterung blockierte Anfragen für einen bestimmten Tab. Diese Fähigkeit ist wichtig, Inhaltsblocker, um Endnutzer auf dem Laufenden zu halten, ohne potenziell vertrauliche Browsermetadaten preiszugeben zur Erweiterung hinzu.

Zusammenfassung

Die Modernisierung der Plattform für Chrome-Erweiterungen war einer unserer Hauptbeweggründe für Manifest V3. In vielen dass wir auf neue Technologien umstellen, aber auch unsere API-Oberfläche vereinfachen mussten. und genau das war unser Ziel.

Ich hoffe, dass ich Ihnen mit diesem Post etwas mehr über diese spezielle Ecke der Manifest V3-Plattform erfahren hat. Bis Weitere Informationen dazu, wie das Chrome-Team mit der Zukunft der Browsererweiterungen umgeht, finden Sie in der Die Seiten Platform Vision und Übersicht über Manifest V3 in der Entwicklerdokumentation. Ihr könnt euch auch mit anderen Entwicklern über Chrome-Erweiterungen auf der chromium-extensions.