0Pricing
HTML Academy · Lezione

La Navigation API nei browser moderni

Usare la Navigation API per intercettare e personalizzare le navigazioni

La Navigation API nei browser moderni è una lezione HTML Academy gratuita su CoddyKit. Questa è la lezione 4 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento HTML Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso HTML Academy include 4 lezioni in totale.

Un'alternativa moderna

La Navigation API è un'alternativa più recente e potente alla History API. Considera le navigazioni come oggetti di prima classe che è possibile intercettare, annullare e attendere: un modello più vicino al modo in cui le SPA devono effettivamente gestire il routing nel 2024.

L'oggetto window.navigation

window.navigation espone l'elenco delle voci, la voce corrente e l'evento navigate. navigation.entries() restituisce tutte le voci della cronologia corrente; navigation.currentEntry è quella attiva. Rispetto alla History API, offre un'alternativa alla proprietà length opaca e allo stato non leggibile.

L'evento navigate

Ascolti navigation.addEventListener("navigate", handler) per intercettare ogni navigazione nello stesso documento: clic sui link, invii di moduli, navigazione avanti o indietro e navigazione programmatica. Un singolo hook sostituisce l'insieme frammentario di intercettazione dei clic, popstate e listener per l'invio dei moduli.

navigation.addEventListener("navigate", (e) => {
  if (!e.canIntercept) return;
  e.intercept({
    handler: async () => {
      await renderPage(new URL(e.destination.url).pathname);
    }
  });
});

intercept e handler

Chiamare e.intercept({ handler }) prende in carico la navigazione. L'handler restituisce una promise; finché è in sospeso, la navigazione è «in corso» e l'URL è già aggiornato. In questo modo si risolve il problema storico della gara tra il cambio dell'URL e il rendering della vista.

Verifica di canIntercept

Non tutte le navigazioni possono essere intercettate, ad esempio quelle verso un'altra origine o i download. Verifichi e.canIntercept prima di chiamare intercept. Questa protezione difensiva, composta da una sola riga, distingue la navigazione della SPA dai reali allontanamenti verso un'altra origine.

Il metodo navigation.navigate

navigation.navigate(url, options) attiva una navigazione programmaticamente, in modo equivalente a un clic. L'oggetto restituito contiene le promise committed e finished, che consentono di attendere il cambio dell'URL o il completamento dell'intero handler.

Stato e chiavi delle voci

Ogni voce della navigazione ha una key stabile, anche dopo i ricaricamenti, e un id valido per la sessione. Utilizzi la key per lo stato persistente, come le posizioni di scorrimento salvate e le bozze dei moduli, e l'id per lo stato temporaneo. L'unico stato offerto dalla History API era un blocco di dati opaco.

Indietro e Avanti

navigation.back() e navigation.forward() sono wrapper di comodità per traverseTo. Restituiscono la stessa coppia di promise { committed, finished }, quindi può attendere la navigazione all'indietro prima di eseguire le operazioni successive.

Annullamento delle navigazioni

Se l'utente fa clic su un secondo link mentre il primo è ancora in fase di rendering, la navigazione in corso può essere annullata. Il gestore riceve un AbortSignal tramite e.signal; lo passi alle chiamate fetch, in modo che il lavoro obsoleto venga annullato quando inizia la nuova navigazione.

e.intercept({
  handler: async () => {
    const data = await fetch(url, { signal: e.signal });
    renderPage(await data.json());
  }
});

Perché non usare semplicemente History?

La History API funziona, ma presenta diversi inconvenienti: le modifiche allo stato e il rendering della vista sono disaccoppiati, la gestione dei clic è manuale, il coordinamento tra più listener è fragile e il ripristino dello scorrimento è incompleto. La Navigation API è stata progettata fin dall'inizio per le esigenze delle SPA e risolve ciascuno di questi problemi.

Supporto dei browser

Chrome ed Edge supportano la Navigation API. Safari e Firefox sono in ritardo (all'inizio del 2026); implementi il rilevamento delle funzionalità ("navigation" in window) e utilizzi History + popstate come fallback quando la funzionalità non è disponibile. Framework come SvelteKit e TanStack Router includono già un wrapper per questo rilevamento.

Quando adottarla

Per i nuovi progetti destinati principalmente a utenti Chromium, la adotti ora e accetti il fallback basato su History. Per i siti pubblici rivolti a un'ampia platea, attenda il supporto di Safari e Firefox (oppure utilizzi una libreria di routing che astragga entrambe le soluzioni). La semplicità di questa API vale l'attesa.

Verifica delle conoscenze

Qual è il principale vantaggio dell'evento navigate della Navigation API rispetto alla combinazione di popstate e intercettazione manuale dei clic prevista dalla History API?

Riepilogo

La Navigation API unifica la navigazione delle SPA sotto un singolo evento navigate, con semantica di intercettazione e annullamento, chiavi stabili per ogni voce e attesa asincrona dei gestori. Sostituisce l'insieme disorganico di History, popstate e intercettazione dei clic. Oggi è supportata dai browser Chromium; per il codice compatibile tra browser, rilevi la funzionalità e utilizzi History come fallback finché Safari e Firefox non recupereranno il ritardo.

Domande Frequenti

La lezione «La Navigation API nei browser moderni» è gratuita?

Sì — il testo completo di «La Navigation API nei browser moderni» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso HTML Academy, passa a CoddyKit PRO. Il corso HTML Academy include 4 lezioni in totale.

Cosa imparerò in «La Navigation API nei browser moderni»?

Usare la Navigation API per intercettare e personalizzare le navigazioni Eserciti HTML Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare HTML Academy?

Non è richiesta alcuna esperienza precedente. HTML Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 4 di 4.

Quanto tempo richiede la lezione «La Navigation API nei browser moderni»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione HTML Academy?

Sì. Ogni lezione HTML Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. pushState e replaceState
  2. L’evento popstate
  3. Routing basato su hash e su path a confronto
  4. La Navigation API nei browser moderni
← Torna a HTML Academy