Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial
  • Lezione 62 di 112
  • livello avanzato
Indice lezioni

Controllo della navigazione: history e location

I meccanismi messi a disposizione dal browser per gestire la navigazione dell'utente
I meccanismi messi a disposizione dal browser per gestire la navigazione dell'utente
Link copiato negli appunti

L'oggetto window del browser ci fornisce anche alcuni meccanismi per gestire e controllare la navigazione dell'utente: history, per tenere traccia della navigazione e location che ci permette di gestire l'URL corrente. In questa lezione le esaminiamo entrambe.

history

La proprietà history è un oggetto che tiene traccia delle pagine visitate dall'utente all'interno di una finestra durante una sessione di navigazione. Grazie a questo oggetto possiamo conoscere il numero di pagine visitate dall'utente accedendo alla proprietà length e possiamo andare avanti e indietro nell'elenco delle pagine visitate sfruttando rispettivamente i metodi forward() e back().

Ad esempio, la seguente istruzione carica la pagina precedentemente visitata dall'utente:

window.history.back();

Per posizionarci direttamente su una specifica pagina nella storia delle pagine visitate dall'utente possiamo utilizzare il metodo go(). Nel seguente esempio carichiamo la terzultima pagina visitata dall'utente:

window.history.go(-3);

Ne consegue che le seguenti istruzioni sono equivalenti:

window.history.back();
window.history.go(-1);

location

Per controllare l'URL del documento caricato nella finestra corrente utilizziamo la proprietà location. Questa proprietà è un oggetto che ci permette di sezionare gli elementi che compongono l'URL del documento, consentendoci di ricavare:

  • il nome del server
  • la porta HTTP eventualmente utilizzata
  • i parametri eventualmente passati e altre informazioni.

Per spiegare le varie informazioni che possiamo recuperare tramite le proprietà dell'oggetto location, prendiamo in considerazione questo URL:

http://www.html.it:8080/articoli/articolo.php?id=123#paragrafo

Nella seguente tabella riportiamo i risultati ottenuti accedendo alle diverse proprietà dell'oggetto location quando la pagina caricata è quella corrispondente all'URL specificato:

Espressione Risultato
window.location.href http://www.html.it:8080/articoli/articolo.php?id=123#paragrafo
window.location.protocol http:
window.location.hostname www.html.it
window.location.host www.html.it:8080
window.location.origin http://www.html.it:8080
window.location.port 8080
window.location.pathname /articoli/articolo.php
window.location.search ?id=123
window.location.hash #paragrafo

Esaminiamo ora un esempio di utilizzo pratico delle proprietà dell'oggetto location:

function getParameters() {
	var paramData = [];
	var parameters = {};
	var param;
	if (window.location.search.length > 0) {
		paramData = window.location.search.split("?")[1].split("&");
		for(var i = 0; i < paramData.length; i++) {
			param = paramData[i].split("=");
			parameters[param[0]] = param[1];
		}
	}
	return parameters;
}

In questo esempio abbiamo definito una funzione che restituisce i parametri presenti nell'URL della pagina corrente. La funzione accede alla proprietà search dell'oggetto location e genera un oggetto con proprietà corrispondenti ai nomi dei parametri. In corrispondenza di un URL analogo al seguente:

https://www.html.it/articoli/articolo.php?id=123&x=567

otterremo quindi un oggetto come questo:

{id: 123, x: 567}

L'accesso alle proprietà dell'oggetto location non è però in sola lettura. Possiamo impostare dinamicamente le varie parti dell'URL ed ottenere di conseguenza la navigazione ad un altro URL. Ad esempio, la seguente istruzione cambia la pagina corrente:

window.location.href = "http://www.html.it";

Possiamo ottenere lo stesso effetto dell'istruzione precedente utilizzando il metodo assign() dell'oggetto location:

window.location.assign("http://www.html.it");

L'oggetto location prevede anche il metodo reload() per ricaricare la pagina corrente. Normalmente la pagina viene caricata dalla cache, anche se ciò dipende dalle impostazioni del browser. Se vogliamo forzare il caricamento dal server possiamo passare il valore true come parametro:

window.location.reload(true);

Il metodo replace(), infine, consente di caricare un nuovo documento al posto di quello attualmente presente nella finestra corrente:

window.location.replace("http://www.html.it");

A differenza di assign(), però, questo metodo sostituisce anche il vecchio documento presente nella history. In altre parole, utilizzando replace() non avremo più traccia del vecchio documento nella history del browser.

Ti consigliamo anche