Tryb aplikacji z kartami dla PWA

Praca nad wieloma dokumentami jednocześnie dzięki kartom w progresywnej aplikacji internetowej

W świecie informatyki metafora pulpitu to metafora interfejsu, która jest zbiorem koncepcji stosowanych przez graficzne interfejsy użytkownika (GUI) w celu ułatwienia użytkownikom interakcji z komputerem. Zgodnie z metaforą na komputery karty GUI są wzorowane na tradycyjnych kartach wstawionych do książek, plików papierowych czy indeksów kart. Interfejs dokumentu z kartami (TDI) lub karta to element graficzny, który umożliwia umieszczenie wielu dokumentów lub paneli w jednym oknie. Karty są elementem nawigacji służącym do przełączania się między zestawami dokumentów.

Progresywne aplikacje internetowe mogą działać w różnych trybach wyświetlania określonych przez właściwość display w pliku manifestu aplikacji internetowej. Przykłady: fullscreen, standalone, minimal-uibrowser. Te tryby wyświetlania są zgodne z dobrze zdefiniowanym łańcuchem kreacji zastępczych ("fullscreen" → "standalone" → "minimal-ui" → "browser"). Jeśli przeglądarka nie obsługuje danego trybu, przechodzi do następnego trybu wyświetlania w łańcuchu. Za pomocą właściwości "display_override" deweloperzy mogą w razie potrzeby określić własny łańcuch kreacji zastępczych.

Co to jest tryb aplikacji z kartami

Do tej pory na platformie brakowało sposobu na to, aby deweloperzy aplikacji PWA mogli oferować użytkownikom interfejs dokumentu z kartami, na przykład aby umożliwić edytowanie różnych plików w tym samym oknie aplikacji PWA. Tryb aplikacji z kartami wypełnia tę lukę.

Sugerowane przypadki użycia trybu aplikacji z kartami

Przykłady witryn, które mogą używać trybu aplikacji z kartami:

  • aplikacje zwiększające produktywność, które umożliwiają użytkownikowi edytowanie więcej niż jednego dokumentu (lub pliku) jednocześnie;
  • Aplikacje do komunikacji, które umożliwiają użytkownikowi prowadzenie rozmów w różnych pokojach na poszczególnych kartach.
  • aplikacje do czytania, które otwierają linki do artykułów w nowych kartach w aplikacji;

Różnice w stosunku do kart utworzonych przez deweloperów

Przechowywanie dokumentów na osobnych kartach przeglądarki zapewnia bezpłatną izolację zasobów, co obecnie nie jest możliwe w internecie. Karty utworzone przez dewelopera nie mogą być skalowane do setek kart tak jak karty w przeglądarce. Funkcje przeglądarki, takie jak historia nawigacji, „Kopiuj adres URL tej strony”, „Przekaż tę kartę” lub „Otwórz tę stronę w przeglądarce” byłyby stosowane do strony interfejsu z kartami utworzonej przez dewelopera, ale nie do aktualnie wybranej strony dokumentu.

Różnice w wersji "display": "browser"

Obecna wartość "display": "browser" ma już określone znaczenie:

Otwiera aplikację internetową zgodnie z konwencją obowiązującą na danej platformie dotyczącej otwierania hiperlinków w kliencie użytkownika (np. na karcie przeglądarki lub w nowym oknie).

Chociaż przeglądarki mogą robić wszystko, co tylko chcą, jeśli chodzi o interfejs użytkownika, to "display": "browser" nagle oznaczałoby „uruchom w oddzielnym oknie aplikacji bez możliwości przeglądarki, ale z interfejsem dokumentu z kartami”.

Ustawienie "display": "browser" to wycofanie zgody na wyświetlanie okna aplikacji.

Obecny stan,

Krok Stan
1. Tworzenie wyjaśnienia Ukończono
2. Tworzenie wstępnej wersji specyfikacji Nie rozpoczęto
3. Zbieranie opinii i ulepszanie projektu W toku
4. Wersja próbna origin W toku
5. Uruchom Nie rozpoczęto

Korzystanie z trybu aplikacji z kartami

Aby używać trybu aplikacji z kartami, deweloperzy muszą włączyć w swoich aplikacjach odpowiednią wartość trybu "display_override" w manifeście aplikacji internetowej.

{
  "display": "standalone",
  "display_override": ["tabbed"]
}

Następnie możesz użyć właściwości "tab_strip", aby dostosować działanie karty. Zawiera 2 dozwolone usługi podrzędne: "home_tab""new_tab_button". Jeśli właściwość "tab_strip" nie jest podana, używane są wartości "auto" z konkretnych właściwości. Przeglądarka określa, jakie wartości należy użyć w przypadku parametru "auto".

Karta Główna

Karta główna to przypięta karta, która, jeśli jest włączona w przypadku danej aplikacji, powinna być zawsze widoczna, gdy aplikacja jest otwarta. Ta karta nigdy nie powinna być wyświetlana. Linki kliknięte na tej karcie powinny otwierać się w nowej karcie aplikacji. Aplikacje mogą dostosować adres URL tej karty i ikonę wyświetlaną na karcie.

Dozwolone wartości dla "home_tab":

  • "auto", by przeglądarka mogła określić, co ma zrobić.
  • "absent", by przeglądarka nie wyświetlała karty głównej.
  • Obiekt z 2 właściwościami podrzędnymi:
    • "url" z dozwolonymi wartościami "auto" lub adres URL, na którym ma być zablokowana karta główna.
    • "icons" z dozwolonymi wartościami "auto" lub tablicą ikon jak w przypadku głównej właściwości "icons".

Przycisk nowej karty

Przycisk Nowa karta (jeśli jest dostępny) powinien otwierać nową kartę pod adresem URL objętym zakresem aplikacji. Aplikacja może ustawić dla tego przycisku niestandardowy URL i ikonę. Przeglądarki mogą samodzielnie określać sposób przeciągania kart, aby tworzyć nowe okna lub łączyć je z kartami przeglądarki.

Dozwolone wartości dla "new_tab_button":

  • "auto", aby pozwolić przeglądarce określić, co ma zrobić.
  • "absent", aby powiedzieć przeglądarce, że nie ma wyświetlać przycisku nowej karty.
  • Obiekt z 2 właściwościami podrzędnymi:
    • "url" z dopuszczalnymi wartościami "auto" lub adresem URL w zakresie, na którym mają otwierać się nowe karty.
    • "icons" z dozwolonymi wartościami "auto" lub tablicą ikon, jak w głównej właściwości "icons".

Pełny przykład

Pełny przykład konfigurowania zachowania aplikacji z interfejsem z kartami może wyglądać tak:

{
  "display_override": ["tabbed"],
  "tab_strip": {
    "home_tab": {
      "url": "./home/",
      "icons": [
        {
          "src": "./home.svg",
          "sizes": "any",
          "type": "image/svg+xml"
        }
      ]
    },
    "new_tab_button": {
      "url": "./new-tab/",
      "icons": [
        {
          "src": "./new-tab.svg",
          "sizes": "any",
          "type": "image/svg+xml"
        }
      ]
    }
  }
}

Wykrywanie trybu aplikacji z kartami

Aplikacje mogą wykryć, czy działają w trybie aplikacji z kartami, sprawdzając funkcję multimediów CSS display-mode w CSS lub JavaScript:

@media (display-mode: tabbed) {
  /* Styles to apply in tabbed application mode. */
}
const tabbedApplicationModeEnabled = window.matchMedia('(display-mode: tabbed)').matches;

Interakcja z interfejsem Launch Handler API

Interfejs Launch Handler API umożliwia witrynom przekierowywanie uruchamiania aplikacji do istniejących okien aplikacji, aby zapobiec otwieraniu zduplikowanych okien. Gdy aplikacja z kartami "client_mode": "navigate-new" zostanie uruchomiona, otworzy się nowa karta w dotychczasowym oknie aplikacji.

Prezentacja

Tryb aplikacji z kartami możesz wypróbować, ustawiając flagę przeglądarki:

  1. Ustaw flagę #enable-desktop-pwas-tab-strip.
  2. Zainstaluj aplikację tabbed-application-mode.glitch.me (kod źródłowy).
  3. Kliknij różne linki na różnych kartach.

Zrzut ekranu pokazujący tryb aplikacji z kartami na stronie tabbed-application-mode.glitch.me.

Prześlij opinię

Zespół Chrome chce poznać Twoje wrażenia związane z trybem aplikacji z kartami.

Prześlij informacje o projektowaniu interfejsu API

Czy coś w trybie aplikacji z kartami nie działa zgodnie z oczekiwaniami? Skomentuj problem z problemem z manifestem aplikacji internetowej, który został przez nas utworzony.

Zgłoś problem z implementacją

Czy znalazłeś/znalazłaś błąd w implementacji Chrome? Zgłoś błąd na stronie new.crbug.com. Podaj jak najwięcej szczegółów, proste instrukcje odtwarzania błędu i wpisz UI>Browser>WebAppInstalls w polu Składniki. Glitch świetnie sprawdza się w przypadku szybkiego i łatwego odtwarzania przypadków.

Pokaż informacje o pomocy dotyczącej interfejsu API

Czy planujesz korzystać z trybu aplikacji z kartami? Twoja publiczna pomoc pomaga zespołowi Chrome ustalać priorytety funkcji i pokazuje innym dostawcom przeglądarek, jak ważne jest wspieranie tych funkcji.

Wyślij tweeta do @ChromiumDev, używając hashtaga #TabbedApplicationMode i podaj, gdzie i jak go używasz.

Podziękowania

Tryb aplikacji z kartami został zbadany przez Matta Giucę. Eksperymentalna implementacja w Chrome została opracowana przez Alana Cuttera. Ten artykuł został sprawdzony przez Joe Medley. Baner powitalny autorstwa Till Niermann na Wikimedia Commons.