Lavorare su più documenti alla volta con le schede nell'app web progressiva
Nel mondo dell'informatica, la metafora del desktop è una metafora dell'interfaccia che rappresenta un insieme di concetti unificanti utilizzati dalle interfacce grafiche utente (GUI) per aiutare gli utenti a interagire più facilmente con il computer. In linea con la metafora desktop, le schede GUI sono modellate sulle tradizionali schede inserite in libri, file cartacei o indici di schede. Una interfaccia per documenti a schede (TDI) o scheda è un elemento di controllo grafico che consente di contenere più documenti o riquadri all'interno di un'unica finestra, utilizzando le schede come widget di navigazione per passare da un set di documenti all'altro.
Le app web progressive possono essere eseguite in varie modalità di visualizzazione determinate dalla proprietà display
nel file manifest dell'app web. Alcuni esempi sono fullscreen
, standalone
, minimal-ui
e browser
. Queste modalità di visualizzazione seguono una
catena di riserva ben definita
("fullscreen"
→ "standalone"
→ "minimal-ui"
→ "browser"
). Se un browser non supporta una
determinata modalità, passa alla modalità di visualizzazione successiva della catena. Tramite la proprietà "display_override"
, gli sviluppatori possono specificare la propria catena di fallback se necessario.
Cos'è la modalità di applicazione a schede
Qualcosa che finora mancava dalla piattaforma è un modo per consentire agli sviluppatori di PWA di offrire ai propri utenti un'interfaccia a schede, ad esempio per consentire la modifica di diversi file nella stessa finestra PWA. La modalità di applicazione a schede colma questa lacuna.
Casi d'uso suggeriti per la modalità di applicazione a schede
Ecco alcuni esempi di siti che possono utilizzare la modalità di applicazione a schede:
- App di produttività che consentono all'utente di modificare più documenti (o file) contemporaneamente.
- App di comunicazione che consentono all'utente di avere conversazioni in stanze diverse per scheda.
- App di lettura che aprono i link agli articoli in nuove schede in-app.
Differenze rispetto alle schede create dagli sviluppatori
Avere i documenti in schede del browser separate comporta l'isolamento delle risorse senza costi aggiuntivi, cosa che non è possibile fare oggi utilizzando il web. Le schede create dagli sviluppatori non sarebbero scalabili in modo accettabile fino a centinaia di schede come le schede del browser. Le convinzioni del browser, come la cronologia di navigazione, "Copia l'URL di questa pagina", "Trasmetti questa scheda" o "Apri questa pagina in un browser web", verranno applicate alla pagina dell'interfaccia a schede creata dallo sviluppatore, ma non alla pagina del documento attualmente selezionata.
Differenze rispetto a "display": "browser"
L'attuale "display": "browser"
ha già un
significato specifico:
Apre l'applicazione web utilizzando la convenzione specifica della piattaforma per l'apertura dei link ipertestuali nell'agente utente (ad es. in una scheda del browser o in una nuova finestra).
Sebbene i browser possano fare ciò che vogliono in termini di UI, sarebbe chiaramente una sovversione piuttosto grande delle aspettative degli sviluppatori se "display": "browser"
significasse improvvisamente "esegui in una finestra distinta specifica per l'applicazione senza funzionalità del browser, ma con un'interfaccia di documento a schede".
L'impostazione "display": "browser"
è il modo per disattivare la visualizzazione in una finestra dell'applicazione.
Stato attuale
Passaggio | Stato |
---|---|
1. Crea messaggio esplicativo | Completata |
2. Creare una bozza iniziale della specifica | Non avviato |
3. Raccogli feedback e ottimizza la progettazione | In corso |
4. Prova dell'origine | In corso |
5. Lancio | Non avviato |
Utilizzo della modalità di applicazione a schede
Per utilizzare la modalità applicazione a schede, gli sviluppatori devono attivare le loro app impostando un valore specifico per la modalità "display_override"
nel file manifest dell'app web.
{
"display": "standalone",
"display_override": ["tabbed"]
}
Successivamente, la proprietà "tab_strip"
può essere utilizzata facoltativamente per ottimizzare il comportamento della scheda. Ha due proprietà secondarie consentite, "home_tab"
e "new_tab_button"
. Se la proprietà "tab_strip"
non è presente, vengono utilizzati i valori "auto"
delle proprietà specifiche. Il browser determina quali valori utilizzare per "auto"
.
Scheda Home
La scheda Home è una scheda bloccata che, se attivata per un'app, deve essere sempre presente quando l'app è aperta. Questa scheda non deve mai essere visualizzata. I link su cui viene fatto clic da questa scheda dovrebbero aprirsi in una nuova scheda dell'app. Le app possono scegliere di personalizzare l'URL a cui è bloccata questa scheda e l'icona visualizzata al suo interno.
I valori consentiti per "home_tab"
sono:
"auto"
per consentire al browser di determinare cosa fare."absent"
per indicare al browser di non mostrare una scheda Home.- Un oggetto con due proprietà secondarie:
"url"
con i valori consentiti di"auto"
o un URL a cui bloccare la scheda Home."icons"
con i valori consentiti di"auto"
o un array di icone come nella proprietà"icons"
principale.
Pulsante Nuova scheda
Il pulsante Nuova scheda, se presente, dovrebbe aprire una nuova scheda in un URL che rientra nell'ambito dell'app. L'app può scegliere di impostare un URL e un'icona personalizzati per questo pulsante. I browser possono decidere come gestire il trascinamento di queste schede per creare nuove finestre o combinarle con le schede del browser.
I valori consentiti per "new_tab_button"
sono:
"auto"
per consentire al browser di determinare cosa fare."absent"
per indicare al browser di non mostrare un pulsante Nuova scheda.- Un oggetto con due proprietà secondarie:
"url"
con i valori consentiti di"auto"
o un URL nell'ambito per aprire nuove schede."icons"
con i valori consentiti di"auto"
o un array di icone come nella proprietà"icons"
principale.
Esempio completo
Un esempio completo per configurare il comportamento di un'app con un'interfaccia a schede potrebbe essere il seguente:
{
"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"
}
]
}
}
}
Rilevamento della modalità dell'applicazione a schede
Le app possono rilevare se sono in esecuzione in modalità di applicazione a schede controllando la
display-mode
funzionalità dei contenuti multimediali del CSS
in CSS o JavaScript:
@media (display-mode: tabbed) {
/* Styles to apply in tabbed application mode. */
}
const tabbedApplicationModeEnabled = window.matchMedia('(display-mode: tabbed)').matches;
Interazione con l'API Launch Gestori
L'API Launch Handler consente ai siti di reindirizzare i lanci di app nelle finestre delle app esistenti per evitare l'apertura di finestre duplicate. Quando un'app con schede imposta "client_mode": "navigate-new"
, i lanci dell'app apriranno una nuova scheda in una finestra dell'app esistente.
Demo
Puoi provare la modalità applicazione a schede impostando un flag del browser:
- Imposta il flag
#enable-desktop-pwas-tab-strip
. - Installa l'app tabbed-application-mode.glitch.me (codice sorgente).
- Fai clic sui diversi link nelle diverse schede.
Feedback
Il team di Chrome vuole conoscere la tua esperienza con la modalità di applicazione a schede.
Parlaci della progettazione dell'API
C'è qualcosa nella modalità di applicazione a schede che non funziona come previsto? Commenta la issue del file manifest dell'app web che abbiamo creato.
Segnalare un problema con l'implementazione
Hai trovato un bug nell'implementazione di Chrome? Segnala un bug all'indirizzo
new.crbug.com. Assicurati di includere il maggior numero di dettagli possibile, istruzioni semplici per la riproduzione e inserisci UI>Browser>WebAppInstalls
nella casella Componenti.
Glitch è ideale per condividere casi di riproduzione facili e veloci.
Mostra il supporto per l'API
Hai intenzione di utilizzare la modalità di applicazione con schede? Il tuo supporto pubblico aiuta il team di Chrome a dare la priorità alle funzionalità e mostra ad altri fornitori di browser quanto sia fondamentale supportarle.
Invia un tweet all'account @ChromiumDev utilizzando l'hashtag
#TabbedApplicationMode
e facci sapere dove e come lo utilizzi.
Link utili
- Spiegazione
- Problema relativo alle specifiche del file manifest dell'app web
- Bug di Chromium
- Componente lampeggiante:
UI>Browser>WebAppInstalls
Ringraziamenti
La modalità di applicazione a schede è stata esplorata da Matt Giuca. L'implementazione sperimentale in Chrome è stata opera di Alan Cutter. Questo articolo è stato esaminato da Joe Medley. Immagine hero di Till Niermann su Wikimedia Commons.