Opis
Użyj interfejsu chrome.sidePanel
API, aby hostować treści w panelu bocznym przeglądarki obok głównej treści strony.
Uprawnienia
sidePanel
Aby używać interfejsu Side Panel API, dodaj uprawnienie "sidePanel"
w pliku manifestu rozszerzenia:
manifest.json:
{
"name": "My side panel extension",
...
"permissions": [
"sidePanel"
]
}
Dostępność
Pojęcia i zastosowanie
Interfejs Side Panel API umożliwia rozszerzeniom wyświetlanie własnego interfejsu w panelu bocznym, co pozwala na zapewnienie użytkownikom stałych funkcji uzupełniających proces przeglądania.

Oto niektóre z nich:
- Panel boczny pozostaje otwarty podczas przechodzenia między kartami (jeśli tak ustawisz).
- Może być dostępna tylko w określonych witrynach.
- Jako strona rozszerzenia panele boczne mają dostęp do wszystkich interfejsów API Chrome.
- W ustawieniach Chrome użytkownicy mogą określić, po której stronie ma być wyświetlany panel.
Przypadki użycia
W sekcjach poniżej przedstawiamy kilka typowych przypadków użycia interfejsu Side Panel API. Pełne przykłady rozszerzeń znajdziesz w sekcji Przykłady rozszerzeń.
Wyświetlanie tego samego panelu bocznego w każdej witrynie
Panel boczny można początkowo ustawić za pomocą właściwości "default_path"
w kluczu "side_panel"
pliku manifestu, aby wyświetlać ten sam panel boczny w każdej witrynie. Powinna ona wskazywać ścieżkę względną w katalogu rozszerzenia.
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>
Włączanie panelu bocznego w określonej witrynie
Rozszerzenie może używać interfejsu API sidepanel.setOptions()
, aby włączyć panel boczny na określonej karcie. W tym przykładzie używamy chrome.tabs.onUpdated()
, aby nasłuchiwać wszelkich aktualizacji wprowadzonych na karcie. Sprawdza, czy adres URL to www.google.com, i włącza panel boczny. W przeciwnym razie wyłącza tę funkcję.
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
});
}
});
Gdy użytkownik tymczasowo przełączy się na kartę, na której panel boczny nie jest włączony, panel boczny zostanie ukryty. Automatycznie pojawi się ponownie, gdy użytkownik przełączy się na kartę, na której była wcześniej otwarta.
Gdy użytkownik przejdzie do witryny, w której panel boczny nie jest włączony, panel boczny zostanie zamknięty, a rozszerzenie nie będzie widoczne w menu panelu bocznego.
Pełny przykład znajdziesz w sekcji Panel boczny dotyczący karty.
Otwórz panel boczny, klikając ikonę na pasku narzędzi.
Deweloperzy mogą zezwolić użytkownikom na otwieranie panelu bocznego po kliknięciu ikony paska narzędzi działania za pomocą sidePanel.setPanelBehavior()
. Najpierw zadeklaruj klucz "action"
w pliku manifestu:
manifest.json:
{
"name": "My side panel extension",
...
"action": {
"default_title": "Click to open panel"
},
...
}
Teraz dodaj ten kod do poprzedniego przykładu:
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));
...
Programowe otwieranie panelu bocznego w wyniku interakcji użytkownika
W Chrome 116 wprowadziliśmy sidePanel.open()
. Umożliwia rozszerzeniom otwieranie panelu bocznego za pomocą gestu użytkownika, np. kliknięcia ikony działania. Może to być też interakcja użytkownika na stronie rozszerzenia lub w skrypcie treści, np. kliknięcie przycisku. Pełną wersję demonstracyjną znajdziesz w przykładzie rozszerzenia Open Side Panel (Otwórz panel boczny).
Poniższy kod pokazuje, jak otworzyć globalny panel boczny w bieżącym oknie, gdy użytkownik kliknie menu kontekstowe. Podczas korzystania z gestu sidePanel.open()
musisz wybrać kontekst, w którym ma się otworzyć. Użyj skrótu windowId
, aby otworzyć globalny panel boczny. Możesz też ustawić tabId
, aby panel boczny otwierał się tylko na określonej karcie.
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 });
}
});
Przełączanie się na inny panel
Rozszerzenia mogą używać funkcji sidepanel.getOptions()
do pobierania bieżącego panelu bocznego. W tym przykładzie ustawiamy panel boczny z powitaniem na stronie runtime.onInstalled()
. Gdy użytkownik przejdzie na inną kartę, zastąpi ją główny panel boczny.
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 });
}
});
Pełny kod znajdziesz w przykładzie Wiele paneli bocznych.
Wrażenia użytkowników w przypadku panelu bocznego
Użytkownicy najpierw zobaczą wbudowane panele boczne Chrome. W menu panelu bocznego każdego rozszerzenia wyświetla się jego ikona. Jeśli nie ma żadnych ikon, wyświetli się ikona zastępcza z pierwszą literą nazwy rozszerzenia.
Otwórz panel boczny
Aby zezwolić użytkownikom na otwieranie panelu bocznego, użyj ikony działania w połączeniu z sidePanel.setPanelBehavior()
. Możesz też wykonać połączenie z numerem sidePanel.open()
po interakcji użytkownika, np.:
- Kliknięcie przycisku działania
- skrót klawiszowy,
- menu kontekstowe,
- Gest użytkownika na stronie rozszerzenia lub w skrypcie treści.
Przypinanie panelu bocznego

Gdy panel boczny jest otwarty, na pasku narzędzi panelu bocznego wyświetla się ikona pinezki. Kliknięcie ikony przypina ikonę działania rozszerzenia. Kliknięcie ikony działania po jej przypięciu spowoduje wykonanie domyślnego działania przypisanego do tej ikony. Panel boczny otworzy się tylko wtedy, gdy zostało to wyraźnie skonfigurowane.
Przykłady
Więcej demonstracji rozszerzeń interfejsu Side Panel API znajdziesz w tych rozszerzeniach:
- Panel boczny słownika
- Globalny panel boczny
- Wiele paneli bocznych
- Otwórz panel boczny.
- Panel boczny dotyczący konkretnej witryny
Typy
CloseOptions
Właściwości
-
tabId
number opcjonalny
Karta, na której ma zostać zamknięty panel boczny. Jeśli w określonej karcie jest otwarty panel boczny dotyczący tej karty, zostanie on zamknięty. Musisz podać co najmniej jeden z tych kodów lub
windowId
. -
windowId
number opcjonalny
Okno, w którym ma zostać zamknięty panel boczny. Jeśli w określonym oknie jest otwarty globalny panel boczny, zostanie on zamknięty na wszystkich kartach w tym oknie, na których nie jest aktywny panel dotyczący karty. Musisz podać co najmniej jeden z tych kodów lub
tabId
.
GetPanelOptions
Właściwości
-
tabId
number opcjonalny
Jeśli zostanie określony, zostaną zwrócone opcje panelu bocznego dla danej karty. W przeciwnym razie zwraca domyślne opcje panelu bocznego (używane w przypadku wszystkich kart, które nie mają określonych ustawień).
OpenOptions
Właściwości
-
tabId
number opcjonalny
Karta, na której ma się otworzyć panel boczny. Jeśli odpowiednia karta ma panel boczny, będzie on otwarty tylko na tej karcie. Jeśli nie ma panelu przypisanego do karty, panel globalny otworzy się na określonej karcie i na wszystkich innych kartach, na których nie ma obecnie otwartego panelu przypisanego do karty. Spowoduje to zastąpienie dowolnego aktywnego panelu bocznego (globalnego lub dotyczącego karty) na odpowiedniej karcie. Musisz podać co najmniej jeden z tych kodów lub
windowId
. -
windowId
number opcjonalny
Okno, w którym ma się otworzyć panel boczny. Dotyczy to tylko sytuacji, gdy rozszerzenie ma globalny (niezależny od karty) panel boczny lub gdy określono też
tabId
. Spowoduje to zastąpienie dowolnego aktywnego obecnie globalnego panelu bocznego otwartego przez użytkownika w danym oknie. Musisz podać co najmniej jeden z tych kodów lubtabId
.
PanelBehavior
Właściwości
-
openPanelOnActionClick
wartość logiczna opcjonalna
Określa, czy kliknięcie ikony rozszerzenia spowoduje przełączenie wyświetlania wpisu rozszerzenia w panelu bocznym. Wartość domyślna to fałsz.
PanelLayout
Właściwości
-
drużyna
PanelOptions
Właściwości
-
włączone
wartość logiczna opcjonalna
Określa, czy panel boczny ma być włączony. Nie jest to jednak wymagane. Wartość domyślna to true (prawda).
-
ścieżka
string opcjonalny
Ścieżka do pliku HTML panelu bocznego, który ma być używany. Musi to być lokalny zasób w pakiecie rozszerzenia.
-
tabId
number opcjonalny
Jeśli zostanie określona, opcje panelu bocznego będą stosowane tylko do karty o tym identyfikatorze. Jeśli te opcje zostaną pominięte, ustawią domyślne działanie (używane w przypadku każdej karty, która nie ma określonych ustawień). Uwaga: jeśli ta sama ścieżka jest ustawiona dla tego identyfikatora karty i domyślnego identyfikatora karty, panel dla tego identyfikatora karty będzie inną instancją niż panel dla domyślnego identyfikatora karty.
Side
Określa możliwe wyrównanie panelu bocznego w interfejsie przeglądarki.
Typ wyliczeniowy
„left”
„right”
SidePanel
Właściwości
-
default_path
ciąg znaków
Ścieżka określona przez dewelopera do wyświetlania panelu bocznego.
Metody
getLayout()
chrome.sidePanel.getLayout(): Promise<PanelLayout>
Zwraca bieżący układ panelu bocznego.
Zwroty
-
Promise<PanelLayout>
getOptions()
chrome.sidePanel.getOptions(
options: GetPanelOptions,
): Promise<PanelOptions>
Zwraca aktywną konfigurację panelu.
Parametry
-
Opcje
Określa kontekst, dla którego ma zostać zwrócona konfiguracja.
Zwroty
-
Promise<PanelOptions>
getPanelBehavior()
chrome.sidePanel.getPanelBehavior(): Promise<PanelBehavior>
Zwraca bieżące zachowanie panelu bocznego rozszerzenia.
Zwroty
-
Promise<PanelBehavior>
open()
chrome.sidePanel.open(
options: OpenOptions,
): Promise<void>
Otwiera panel boczny rozszerzenia. Tę funkcję można wywołać tylko w odpowiedzi na działanie użytkownika.
Parametry
-
Opcje
Określa kontekst, w którym ma się otworzyć panel boczny.
Zwroty
-
Promise<void>
setOptions()
chrome.sidePanel.setOptions(
options: PanelOptions,
): Promise<void>
Konfiguruje panel boczny.
Parametry
-
Opcje
Opcje konfiguracji, które mają być zastosowane do panelu.
Zwroty
-
Promise<void>
setPanelBehavior()
chrome.sidePanel.setPanelBehavior(
behavior: PanelBehavior,
): Promise<void>
Konfiguruje działanie panelu bocznego rozszerzenia. Jest to operacja typu upsert.
Parametry
-
o zachowaniach konsumentów
Nowe zachowanie do ustawienia.
Zwroty
-
Promise<void>