W lutym 2026 r. w Chrome 145 wprowadziliśmy natywny widok podzielony, który umożliwia użytkownikom wyświetlanie kart obok siebie i zarządzanie nimi w tym samym oknie. Dzięki temu nie trzeba już korzystać z narzędzi innych firm do zarządzania oddzielnymi oknami systemu operacyjnego. Użytkownicy mogą ręcznie dodawać i usuwać karty z widoku podzielonego za pomocą elementów sterujących przeglądarki, ale programiści nie mogli programowo kontrolować tych nowych układów kart w rozszerzeniach Chrome.
Z przyjemnością informujemy o wprowadzeniu nowego interfejsu Split View API, który jest dostępny od Chrome 155. Ten nowy interfejs API, opracowany w ścisłej współpracy z firmą Mozilla i innymi dostawcami przeglądarek w ramach grupy WebExtensions Community Group, umożliwia rozszerzeniom wykrywanie, tworzenie i zarządzanie wbudowanymi widokami podzielonymi.
Prezentacja
Jak to działa
Wcześniej rozszerzenia tworzące interfejsy obok siebie korzystały z niestabilnych obejść, takich jak zmiana rozmiaru wielu natywnych okien, osadzanie stron w elementach <iframe> lub używanie paneli bocznych. Nowy interfejs Split View API jest bezpośrednio zintegrowany z interfejsem Tabs API w Chrome, co umożliwia nowe funkcje zarządzania układem kart.
Uprawnienia w pliku manifestu
Interfejs Split View API jest częścią przestrzeni nazw browser.tabs i nie wymaga żadnych uprawnień.
Identyfikowanie widoków podzielonych
Każdy obiekt Tab zawiera splitViewId.
Jeśli karta jest częścią widoku podzielonego, ma niepowtarzalny identyfikator, który jest taki sam jak identyfikator sparowanej karty. W przeciwnym razie wartość splitViewId jest domyślnie ustawiona na -1.
// Querying all split views in the current windows
const tabs = await browser.tabs.query({ currentWindow: true });
const splitViews = tabs.map(tab => tab.splitViewId).filter(splitViewId => splitViewId !== -1);
Ograniczenia ogólne
Aby 2 karty mogły być wyświetlane w widoku podzielonym, muszą spełniać te wymagania:
- Karty muszą być sąsiadujące ze sobą (lub utworzone w ten sposób).
- Karty nie mogą być już w widoku dzielonym.
- Karty muszą mieć ten sam stan
pinned,windowIdigroupId.
Z kolei po połączeniu 2 kart zachowają one te same stany pinned, windowId i groupId oraz względne położenie względem siebie.
Tworzenie widoków dzielonych
Rozszerzenie może utworzyć nowy widok dzielony na 2 sposoby:
- Utwórz nową kartę, która zostanie podzielona z istniejącą kartą za pomocą nowego parametru
splitWithTabIdwbrowser.tabs.create. - Sparuj 2 dotychczasowe karty z nową metodą
browser.tabs.createSplit.
Przykłady
Możesz utworzyć nową kartę, używając ikony splitWithTabId, aby podzielić istniejącą kartę.
await browser.tabs.create({splitWithTabId: existingTab.id});
Domyślnie nowa karta zostanie utworzona po prawej stronie istniejącej karty.
Aby utworzyć nową kartę po lewej stronie istniejącej karty, ustaw indeks jako indeks tej karty:
await browser.tabs.create({splitWithTabId: existingTab.id, index: existingTab.index});
Możesz też utworzyć nowy widok dzielony, łącząc 2 istniejące karty.
await browser.tabs.createSplit([existingTab1.id, existingTab2.id]);
Rozdzielanie widoków dzielonych
Aby podzielić widok dzielony na 2 niezależne karty, rozszerzenie może użyć nowej metody browser.tabs.unsplit.
const splitViewId = browser.tabs.createSplit([tab1.id, tab2.id]);
// Unsplitting the split view into two independent tabs
await browser.tabs.unsplit(splitViewId);
Więcej informacji
Mamy nadzieję, że ta nowa funkcja usprawni pracę z rozszerzeniami. Aby zacząć tworzyć rozszerzenia z funkcją widoku podzielonego, zapoznaj się z dokumentacją interfejsu Tabs API. Jeśli masz pytania lub potrzebujesz pomocy dotyczącej interfejsu Split View API, odwiedź grupę dyskusyjną Chromium extensions w Google.
Miłego dzielenia!