Ciekawe zastosowania interfejsu Document Picture-in-Picture API

Opublikowano: 4 marca 2025 r.

Interfejs Document Picture-in-Picture API (Document PiP API) umożliwia aplikacjom internetowym otwieranie pływającego okna, które zawsze znajduje się na wierzchu (okna obrazu w obrazie) i może wyświetlać dowolną treść HTML.

Ten interfejs API jest oparty na interfejsie Picture-in-Picture API dla <video>, który umożliwia dalsze oglądanie filmów w oknie obrazu w obrazie.

Ponieważ interfejs Document PiP API może wyświetlać dowolną treść HTML, możesz go używać do odblokowywania nowych, ciekawych przypadków użycia.

Obsługa przeglądarek i progresywne ulepszanie

Browser Support

  • Chrome: 116.
  • Edge: 116.
  • Firefox: 151.
  • Safari: not supported.

Source

W momencie pisania tego artykułu interfejs Document Picture-in-Picture API jest dostępny w ograniczonym zakresie.

Nie powinno to jednak uniemożliwiać korzystania z niego w połączeniu z progresywnym ulepszaniem lub łagodną degradacją.

Planując przypadek użycia, traktuj go jako progresywne ulepszanie, a nie standardową funkcję. W tym artykule znajdziesz przykład łagodnej degradacji.

Ulepszanie wygody użytkowników korzystających z interfejsu Document PiP API

LearnHTMLCSS.online to interaktywna platforma edukacyjna, która uczy semantycznego i dostępnego kodu HTML i CSS. Oferuje interaktywny edytor tekstu i okno podglądu w przeglądarce.

Poniższy screencast pokazuje układ aplikacji. Ekran jest podzielony na 2 kolumny. Pierwsza kolumna zawiera edytor kodu. Druga kolumna zawiera układ z kartami. Domyślnie użytkownik może zobaczyć instrukcje dotyczące wyzwania i kliknąć kartę Przeglądarka , aby wyświetlić podgląd na żywo.

Jako uczeń możesz czasami chcieć zmaksymalizować okno podglądu w przeglądarce. To doskonała okazja, aby dodać obsługę interfejsu Document Picture-in-Picture API.

Aby to zrobić, zacznij od sprawdzenia, czy przeglądarka obsługuje ten interfejs:

const isPipSupported = "documentPictureInPicture" in window;

Teraz możesz użyć tej zmiennej, aby opakować wszystkie wywołania documentPictureInPicture lub aby wcześniej powrócić z funkcji, która korzysta z interfejsu Document PiP. Poniższy kod sprawdza, czy interfejs Document PiP jest obsługiwany, a następnie otwiera okno Document PiP.

async function initDocumentPip() {
  if (!isPipSupported) {
    return false;
  }

  const pipWindow = await documentPictureInPicture.requestWindow({
    width: window.innerWidth,
    height: window.innerHeight,
  });
}

W zależności od przypadku użycia możesz określić dowolną szerokość i wysokość okna. Możesz spróbować dopasować okno do konkretnego elementu, bieżącego dokumentu lub nawet podać stałe wartości.

Na razie masz pusty dokument. Teraz musisz wypełnić go treścią.

// htmlCode is the HTML code of the challenge
pipWindow.document.documentElement.innerHTML = htmlCode;

W przypadku wyzwań z kodem CSS musisz też zsynchronizować CSS.

To wszystko. Masz teraz przycisk maksymalizacji, który otwiera się w osobnym oknie obrazu w obrazie.Oprócz maksymalizacji karty podglądu w przeglądarce możesz też przenieść ją na osobny ekran, jeśli masz zewnętrzny monitor, lub nawet zmienić układ głównej aplikacji internetowej i karty podglądu w przeglądarce na układ kolumnowy.

Kreacja zastępcza

Pamiętaj, że ten interfejs API ma ograniczoną dostępność. W przeglądarkach i na urządzeniach, które nie obsługują tego interfejsu API, musisz zapewnić zachowanie rezerwowe (płynne przechodzenie do starszej wersji).

Zamiast sprawiać, że przycisk maksymalizacji wyciąga całą kartę podglądu w przeglądarce, możemy sprawić, że zajmie on całą pozostałą przestrzeń bieżącej aplikacji internetowej.

Wypróbuj to zachowanie w różnych przeglądarkach: https://learnhtmlcss.online/app.html?id=2096

Nie zapomnij zwrócić uwagi na drobne szczegóły w etykietkach. Gdy isPipSupported ma wartość true, etykietka przycisku maksymalizacji/minimalizacji przełącza się między Włącz obraz w obrazie a Wyłącz obraz w obrazie. Z drugiej strony, gdy isPipSupported ma wartość false, zachowanie rezerwowe jest opisane za pomocą Maksymalizuj i Minimalizuj.


Jak widzisz, interfejs Document Picture-in-Picture API może odblokować nowe, ciekawe przypadki użycia w Twojej aplikacji internetowej, jeśli połączysz go z progresywnym ulepszaniem lub łagodną degradacją.

Nie pozwól, aby ograniczone wsparcie przeglądarek Cię ograniczało, i nie zapomnij o odpowiednim przypadku użycia rezerwowego.

Zapoznaj się z dokumentacją interfejsu Document PiP, aby poznać różne przykłady i przypadki użycia tego interfejsu API.