Tryb aplikacji z kartami dla PWA

Praca nad wieloma dokumentami jednocześnie za pomocą kart w progresywnej aplikacji internetowej

W świecie informatyki metafora pulpitu to zestaw pojęć, które są używane przez graficzne interfejsy użytkownika (GUI) w celu ułatwienia użytkownikom interakcji z komputerem. Zgodnie z metaforą komputera karty GUI są wzorowane na tradycyjnych kartach w książkach, papierowych teczkach lub katalogach 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-ui i browser. 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. W razie potrzeby deweloperzy mogą określić własny łańcuch awaryjny za pomocą właściwości "display_override".

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 zastosowania 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

Dokumenty w osobnych kartach przeglądarki zapewniają bezpłatne izolowanie zasobów, co jest niemożliwe w obecnej sieci. Karty utworzone przez dewelopera nie skalują się odpowiednio 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 na stronie interfejsu z kartami utworzonymi przez dewelopera, ale nie na aktualnie wybranej stronie dokumentu.

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

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

Otwiera aplikację internetową, używając konwencji otwierania hiperłączy w ramach przeglądarki (np. w karcie lub 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. Zbieraj opinie i ulepszaj projekt W toku
4. Wersja próbna origin W toku
5. Uruchom Nie rozpoczęto

Korzystanie z trybu aplikacji z kartami

Aby korzystać z trybu aplikacji z kartami, deweloperzy muszą włączyć tę opcję w swoich aplikacjach, ustawiając w pliku manifestu aplikacji internetowej odpowiednią wartość parametru "display_override".

{
  "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" jest nieobecna, używane są wartości "auto" poszczególnych 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 się otwierać. 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", aby pozwolić przeglądarce określić, co ma zrobić.
  • "absent", aby powiedzieć przeglądarce, aby 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 nowej karty (jeśli jest dostępny) powinien otwierać nową kartę z adresem URL, który mieści się w zakresie aplikacji. Aplikacja może ustawić niestandardowy adres URL i ikonę dla tego przycisku. Przeglądarki mogą samodzielnie określać sposób przenoszenia kart, aby tworzyć nowe okna lub łączyć je z innymi 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 adres URL w zakresie, w którym mają otwierać się nowe karty.
    • "icons" z dozwolonymi wartościami "auto" lub tablicą ikon jak w przypadku 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ę mediów display-mode CSS 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 korzystaniem z trybu aplikacji z kartami.

Poinformuj nas 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łaszanie problemów 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 Components. Glitch świetnie sprawdza się do 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.