Beschreibung
Mit der chrome.sidePanel
API kannst du Inhalte in der Seitenleiste des Browsers neben dem Hauptinhalt einer Webseite hosten.
Berechtigungen
sidePanel
Wenn Sie die Side Panel API verwenden möchten, fügen Sie der Manifestdatei der Erweiterung die Berechtigung "sidePanel"
hinzu:
manifest.json:
{
"name": "My side panel extension",
...
"permissions": [
"sidePanel"
]
}
Verfügbarkeit
Konzepte und Verwendung
Mit der Side Panel API können Erweiterungen ihre eigene Benutzeroberfläche in der Seitenleiste anzeigen. Dadurch ist eine dauerhafte Nutzung möglich, die das Surfen der Nutzer ergänzt.
<ph type="x-smartling-placeholder">Zu den Funktionen gehören:
- Die Seitenleiste bleibt beim Wechseln zwischen Tabs geöffnet, sofern sie aktiviert ist.
- Sie kann nur auf bestimmten Websites verfügbar sein.
- Als Erweiterungsseite haben Seitenleisten Zugriff auf alle Chrome APIs.
- In den Chrome-Einstellungen können Nutzer festlegen, auf welcher Seite das Steuerfeld angezeigt werden soll.
Anwendungsfälle
In den folgenden Abschnitten werden einige häufige Anwendungsfälle für die Side Panel API beschrieben. Vollständige Beispiele für Erweiterungen finden Sie unter Beispiele für Erweiterungen.
Dieselbe Seitenleiste auf jeder Website anzeigen
Die Seitenleiste kann anfänglich über die Eigenschaft "default_path"
im Schlüssel "side_panel"
des Manifests festgelegt werden, um dieselbe Seitenleiste auf jeder Website anzuzeigen. Dieser sollte auf einen relativen Pfad innerhalb des Erweiterungsverzeichnisses verweisen.
manifest.json:
{
"name": "My side panel extension",
...
"side_panel": {
"default_path": "sidepanel.html"
}
...
}
sidepanel.html:
<!DOCTYPE html>
<html>
<head>
<title>My Sidepanel</title>
</head>
<body>
<h1>All sites sidepanel extension</h1>
<p>This side panel is enabled on all sites</p>
</body>
</html>
Seitenleiste auf einer bestimmten Website aktivieren
Eine Erweiterung kann mit sidepanel.setOptions()
eine Seitenleiste auf einem bestimmten Tab aktivieren. In diesem Beispiel wird chrome.tabs.onUpdated()
verwendet, um auf Aktualisierungen auf dem Tab zu warten. Dabei wird geprüft, ob die URL www.google.com lautet, und die Seitenleiste wird aktiviert. Andernfalls wird es deaktiviert.
service-worker.js:
const GOOGLE_ORIGIN = 'https://www.google.com';
chrome.tabs.onUpdated.addListener(async (tabId, info, tab) => {
if (!tab.url) return;
const url = new URL(tab.url);
// Enables the side panel on google.com
if (url.origin === GOOGLE_ORIGIN) {
await chrome.sidePanel.setOptions({
tabId,
path: 'sidepanel.html',
enabled: true
});
} else {
// Disables the side panel on all other sites
await chrome.sidePanel.setOptions({
tabId,
enabled: false
});
}
});
Wenn ein Nutzer vorübergehend zu einem Tab wechselt, auf dem die Seitenleiste nicht aktiviert ist, wird die Seitenleiste ausgeblendet. Sie wird automatisch wieder angezeigt, wenn der Nutzer zu einem Tab wechselt, in dem er zuvor geöffnet war.
Wenn der Nutzer eine Website aufruft, für die die Seitenleiste nicht aktiviert ist, wird die Seitenleiste geschlossen und die Erweiterung nicht im Drop-down-Menü der Seitenleiste angezeigt.
Ein vollständiges Beispiel finden Sie unter Beispiel für eine tabellarische Seitenleiste.
Öffnen Sie die Seitenleiste, indem Sie auf das Symbol in der Symbolleiste klicken
Entwickler können Nutzern erlauben, die Seitenleiste zu öffnen, wenn sie auf das Symbol für die Aktionssymbole sidePanel.setPanelBehavior()
klicken. Deklariere zuerst den Schlüssel "action"
im Manifest:
manifest.json:
{
"name": "My side panel extension",
...
"action": {
"default_title": "Click to open panel"
},
...
}
Fügen Sie nun diesen Code in das vorherige Beispiel ein:
service-worker.js:
const GOOGLE_ORIGIN = 'https://www.google.com';
// Allows users to open the side panel by clicking on the action toolbar icon
chrome.sidePanel
.setPanelBehavior({ openPanelOnActionClick: true })
.catch((error) => console.error(error));
...
Seitenleiste bei einer Nutzerinteraktion programmatisch öffnen
Mit Chrome 116 wird sidePanel.open()
eingeführt. Erweiterungen können die Seitenleiste durch eine Nutzergeste für eine Erweiterung öffnen, z. B. durch Klicken auf das Aktionssymbol. Eine Nutzerinteraktion auf einer Erweiterungsseite oder ein Content-Skript, z. B. ein Klick auf eine Schaltfläche Eine vollständige Demo finden Sie in der Beispielerweiterung Seitenleiste öffnen.
Der folgende Code zeigt, wie eine globale Seitenleiste im aktuellen Fenster geöffnet wird, wenn der Nutzer auf ein Kontextmenü klickt. Wenn Sie sidePanel.open()
verwenden, müssen Sie den Kontext auswählen, in dem die Datei geöffnet werden soll. Verwende windowId
, um eine globale Seitenleiste zu öffnen. Alternativ können Sie tabId
so einstellen, dass die Seitenleiste nur auf einem bestimmten Tab geöffnet wird.
service-worker.js:
chrome.runtime.onInstalled.addListener(() => {
chrome.contextMenus.create({
id: 'openSidePanel',
title: 'Open side panel',
contexts: ['all']
});
});
chrome.contextMenus.onClicked.addListener((info, tab) => {
if (info.menuItemId === 'openSidePanel') {
// This will open the panel in all the pages on the current window.
chrome.sidePanel.open({ windowId: tab.windowId });
}
});
Zu einem anderen Bereich wechseln
Erweiterungen können die aktuelle Seitenleiste über sidepanel.getOptions()
abrufen. Im folgenden Beispiel wird eine Seitenleiste mit der Begrüßung für runtime.onInstalled()
festgelegt. Wenn der Nutzer dann zu einem anderen Tab wechselt, wird dieser durch die Hauptseite ersetzt.
service-worker.js:
const welcomePage = 'sidepanels/welcome-sp.html';
const mainPage = 'sidepanels/main-sp.html';
chrome.runtime.onInstalled.addListener(() => {
chrome.sidePanel.setOptions({ path: welcomePage });
chrome.sidePanel.setPanelBehavior({ openPanelOnActionClick: true });
});
chrome.tabs.onActivated.addListener(async ({ tabId }) => {
const { path } = await chrome.sidePanel.getOptions({ tabId });
if (path === welcomePage) {
chrome.sidePanel.setOptions({ path: mainPage });
}
});
Den vollständigen Code finden Sie im Beispiel Mehrere Seitenleisten.
Nutzerfreundlichkeit der Seitenleiste
Nutzer sehen zuerst die integrierten Seitenleisten von Chrome. In jeder Seitenleiste wird im Seitenleistenmenü das Symbol der Erweiterung angezeigt. Wenn keine Symbole vorhanden sind, wird ein Platzhaltersymbol mit dem ersten Buchstaben des Namens der Erweiterung angezeigt.
Seitenleiste öffnen
Damit Nutzer die Seitenleiste öffnen können, musst du ein Aktionssymbol in Kombination verwenden
mit sidePanel.setPanelBehavior()
. Alternativ können Sie nach einer Nutzerinteraktion sidePanel.open()
aufrufen, z. B.:
- Aktionsklick
- Ein Tastenkürzel
- Ein Kontextmenü
- Eine Nutzergeste auf einer Erweiterungsseite oder einem Inhaltsskript.
Seitenleiste anpinnen
<ph type="x-smartling-placeholder">Wenn die Seitenleiste geöffnet ist, wird in der Symbolleiste der Seitenleiste ein Stecknadelsymbol angezeigt. Wenn Sie darauf klicken, wird das Aktionssymbol Ihrer Erweiterung angepinnt. Durch Klicken auf das Aktionssymbol Durch das Anheften wird die Standardaktion für das Aktionssymbol ausgeführt. Seitenleiste öffnen, wenn dies explizit konfiguriert wurde.
Beispiele
Weitere Demos für die Side Panel API-Erweiterungen finden Sie in den folgenden Erweiterungen:
- Seitenleiste für Wörterbuch:
- Globale Seitenleiste:
- Mehrere Seitenleisten:
- Seitenleiste öffnen:
- Websitespezifische Seitenleiste:
Typen
GetPanelOptions
Attribute
-
tabId
Zahl optional
Wenn angegeben, werden die Optionen der Seitenleiste für den jeweiligen Tab zurückgegeben. Andernfalls werden die standardmäßigen Optionen der Seitenleiste verwendet. Diese werden für alle Tabs ohne bestimmte Einstellungen verwendet.
OpenOptions
Attribute
-
tabId
Zahl optional
Der Tab, in dem die Seitenleiste geöffnet werden soll. Wenn der entsprechende Tab eine tabellarische Seitenleiste hat, wird sie nur für diesen Tab geöffnet. Wenn kein tabellarisches Steuerfeld vorhanden ist, wird das globale Steuerfeld in dem angegebenen Tab und allen anderen Tabs geöffnet, die derzeit keinen tabellarischen Bereich haben. Dadurch werden alle derzeit aktiven Seitenleisten (global oder tabulatorspezifisch) auf dem entsprechenden Tab überschrieben. Es muss mindestens eines dieser Werte oder
windowId
angegeben werden. -
windowId
Zahl optional
Das Fenster, in dem die Seitenleiste geöffnet werden soll. Dies gilt nur, wenn die Erweiterung eine globale (nicht tabulatorspezifische) Seitenleiste hat oder
tabId
ebenfalls angegeben wurde. Dadurch werden alle derzeit aktiven globalen Seitenleisten überschrieben, die der Nutzer im jeweiligen Fenster geöffnet hat. Es muss mindestens eines dieser Werte odertabId
angegeben werden.
PanelBehavior
Attribute
-
openPanelOnActionClick
Boolescher Wert optional
Ob beim Klicken auf das Symbol der Erweiterung der Eintrag der Erweiterung in der Seitenleiste angezeigt wird. Die Standardeinstellung ist "false".
PanelOptions
Attribute
-
aktiviert
Boolescher Wert optional
Legt fest, ob die Seitenleiste aktiviert werden soll. Dies ist optional. Der Standardwert ist true.
-
Pfad
String optional
Der Pfad zur HTML-Datei der Seitenleiste, die verwendet werden soll. Dies muss eine lokale Ressource im Erweiterungspaket sein.
-
tabId
Zahl optional
Wenn angegeben, gelten die Optionen in der Seitenleiste nur für den Tab mit dieser ID. Wenn keine Angabe gemacht wird, legen diese Optionen das Standardverhalten fest. Diese Option wird für alle Tabs verwendet, die keine spezifischen Einstellungen haben. Hinweis: Wenn für diese tabId und die standardmäßige tabId derselbe Pfad festgelegt ist, ist das Steuerfeld für diese tabId eine andere Instanz als das Steuerfeld für die standardmäßige tabId.
SidePanel
Attribute
-
default_path
String
Vom Entwickler angegebener Pfad für die Anzeige in der Seitenleiste.
Methoden
getOptions()
chrome.sidePanel.getOptions(
options: GetPanelOptions,
callback?: function,
)
Gibt die Konfiguration des aktiven Steuerfelds zurück.
Parameter
-
Optionen
Gibt den Kontext an, für den die Konfiguration zurückgegeben werden soll.
-
callback
Funktion optional
Der Parameter
callback
sieht so aus: <ph type="x-smartling-placeholder"></ph>(options: PanelOptions) => void
-
Optionen
-
Gibt Folgendes zurück:
-
Promise<PanelOptions>
Promise-Objekte werden in Manifest V3 und höher unterstützt, Callbacks sind jedoch für Abwärtskompatibilität. Sie können nicht beide in demselben Funktionsaufruf verwenden. Die Promise wird mit demselben Typ aufgelöst, der an das Callback übergeben wird.
getPanelBehavior()
chrome.sidePanel.getPanelBehavior(
callback?: function,
)
Gibt das aktuelle Verhalten der Erweiterung in der Seitenleiste zurück.
Parameter
-
callback
Funktion optional
Der Parameter
callback
sieht so aus: <ph type="x-smartling-placeholder"></ph>(behavior: PanelBehavior) => void
-
zum weltweiten Kundenverhalten.
-
Gibt Folgendes zurück:
-
Promise<PanelBehavior>
Promise-Objekte werden in Manifest V3 und höher unterstützt, Callbacks sind jedoch für Abwärtskompatibilität. Sie können nicht beide in demselben Funktionsaufruf verwenden. Die Promise wird mit demselben Typ aufgelöst, der an das Callback übergeben wird.
open()
chrome.sidePanel.open(
options: OpenOptions,
callback?: function,
)
Öffnet die Seitenleiste für die Erweiterung. Dies darf nur als Reaktion auf eine Nutzeraktion aufgerufen werden.
Parameter
-
Optionen
Gibt den Kontext an, in dem die Seitenleiste geöffnet werden soll.
-
callback
Funktion optional
Der Parameter
callback
sieht so aus: <ph type="x-smartling-placeholder"></ph>() => void
Gibt Folgendes zurück:
-
Versprechen<void>
Promise-Objekte werden in Manifest V3 und höher unterstützt, Callbacks sind jedoch für Abwärtskompatibilität. Sie können nicht beide in demselben Funktionsaufruf verwenden. Die Promise wird mit demselben Typ aufgelöst, der an das Callback übergeben wird.
setOptions()
chrome.sidePanel.setOptions(
options: PanelOptions,
callback?: function,
)
Konfiguriert die Seitenleiste.
Parameter
-
Optionen
Die Konfigurationsoptionen, die auf das Steuerfeld angewendet werden sollen.
-
callback
Funktion optional
Der Parameter
callback
sieht so aus: <ph type="x-smartling-placeholder"></ph>() => void
Gibt Folgendes zurück:
-
Versprechen<void>
Promise-Objekte werden in Manifest V3 und höher unterstützt, Callbacks sind jedoch für Abwärtskompatibilität. Sie können nicht beide in demselben Funktionsaufruf verwenden. Die Promise wird mit demselben Typ aufgelöst, der an das Callback übergeben wird.
setPanelBehavior()
chrome.sidePanel.setPanelBehavior(
behavior: PanelBehavior,
callback?: function,
)
Konfiguriert das Verhalten der Seitenleiste der Erweiterung. Dies ist ein Upsert-Vorgang.
Parameter
-
zum weltweiten Kundenverhalten.
Das neue Verhalten, das festgelegt werden soll.
-
callback
Funktion optional
Der Parameter
callback
sieht so aus: <ph type="x-smartling-placeholder"></ph>() => void
Gibt Folgendes zurück:
-
Versprechen<void>
Promise-Objekte werden in Manifest V3 und höher unterstützt, Callbacks sind jedoch für Abwärtskompatibilität. Sie können nicht beide in demselben Funktionsaufruf verwenden. Die Promise wird mit demselben Typ aufgelöst, der an das Callback übergeben wird.