Logo JsDir.com [niente]
Bring Your Site To Life!!!
5 Settembre 2008 - 19:21:03 - 22 scripters on-line! - La tua posizione nel sito: Tutorials/L'oggetto "location"/
BedInLecce
Tutorials
L'oggetto "Location"
Panoramica sulle proprietà ed i metodi
- location: Metodi e proprietà
- location.search: Lavorare con i parametri della URL (QueryString)

Metodi e proprietà

      "location" è un oggetto di JavaScript che rappresenta la URL completa associata alla finestra.
      In generale una URL ha questa struttura: protocol//host:port/pathname#hash?search. Ogni porzione della URL rappresenta una proprietà della location:

Proprietà:
ProprietàDescrizione
hashRestituice il nome dell'ancora nella URL.
hostRestituisce l'host e nome di dominio, o l'indirizzo IP, di un server della rete.
hostnameRestituisce la coppia host:port della URL.
hrefRestituisce l'intera URL.
pathnameRestituisce la path (il percorso) fino al nome del file.
portRestituisce la porta di comunicazione usata dal server.
protocolRestituisce il protocollo della URL, inclusi i due punti.
searchRestituisce il gruppo di parametri ricevuti dalla pagina compreso il "?".
 
Metodi:
MetodoDescrizione
reload()Ricarica il documento corrente.
replace()Carica una URL sostituendola alla voce attuale nella history.

      Una delle tipiche URL di JsDir si presta quasi perfettamente ad elencare le varie proprietà di location: http://www.jsdir.com/userscripts/userscripts.asp?show=Categoria&filtro=Vari.
      "Quasi" perché nel sito non usiamo quasi mai le ancore né abbiamo bisogno di specificare una porta dal momento che la 80 di default ci basta ed avanza. Dunque simuliamo una porta ed un'ancora nella URL e facciamo finta di niente :-)
      Sulla nostra ipotetica URL dunque vediamo velocemente cosa ci restituiscono le varie proprietà per poi soffermarci su search, reload e replace che sono effettivamente la proprietà ed i metodi più utili.

      Questa è la URL su cui supponiamo di eseguire uno script:
http://www.jsdir.com:80/userscripts/userscripts.asp#inizio?show=Categoria&filtro=Vari

       Estraiamo i dati della nostra tabella:
ProprietàValore restituito
hash#inizio
hostwww.jsdir.com:80
hostnamewww.jsdir.com
hrefhttp://www.jsdir.com:80/userscripts/userscripts.asp#inizio?show=Categoria&filtro=Vari
pathname/userscripts/userscripts.asp
port80
protocolhttp:
search?show=Categoria&filtro=Vari
 

       Raramente si usano queste proprietà lato client, almeno io non le ho mai usate, tranne href e search.
       Di search cui ci occuperemo nella prossima pagina, vediamo invece "href" ed i due metodi.

       href viene usato per cambiare pagina: ad esempio nei menu dinamici. Eseguire un'istruzione del tipo: self.location.href="pagina.html" ha lo stesso effetto del click su un link.

       reload() consente di ricaricare il documento. Ci sono almeno due casi in cui si si chiede a JavaScript di ricaricare: con Netscape quando si usano dei layers e (pià in generale) quando sia necessario aggiornare la pagina ricaricandola dal server. Il primo caso si ha per un bug di Netscape. Se la finestra del browser viene ridimensionata il programma distrugge gli oggetti ed usando i layers con JavaScript (ad esempio per muoverli ecc.) se lo script richiede operazioni sui layers, non trovandoli più genera errori. La soluzione a questo bug è includere l'event-handler "onResize" nel BODY: <BODY .... onResize="if (document.layers){location.reload()}">. Quest'istruzione risolve il problema: se il browser viene ridimensionato l'event-handler scatta, e se il documento sta girando su Netscape la pagina viene ricaricata.
       Notiamo che reload() non ricarica la pagina dal server. Se il documento è disponibile nella cache del browser, il reload avviene rifrescando da questa. Se invece abbiamo necessità di ricaricare dal server (ad esempio la pagina è generata da ASP o da un CGI o comunque siamo certi che qualche dato della pagina pescato da un database è cambiato), useremo reload(true). Passando il parametro true il browser ignorerà la cache ed invierà una richiesta al server come se accedesse alla pagina per la prima volta.

       replace() fa quasi lo stesso lavoro di href: si usa così: self.location.replace("pagina.html"), ma a differenza di href la nuova pagina prende il posto dell'attuale nella history del browser, cosi che se il nostro visitatore clicca sul bottone "indietro" del browser non torna alla pagina che ha eseguito il replace, ma alla pagina precedente.
       Cerchiamo di essere più chiari con un esempio: supponiamo di essere in una pagina "pagina1.html" che contiene un link come questo: <HREF="pagina2.html">Pagina 2</A>. Nella pagina 2 viene eseguita da JavaScript questa istruzione: self.location.replace("pagina3.html"). Ora l'utente è davanti alla pagina 3. Se clicca sul bottone Indietro del browser si aspetterebbe di ritornare alla pagina 2, invece ritorna alla pagina 1! Perché quando il browser ha eseguito il replace() non ha registrato il cambio di pagina. Questo può essere utile quando ci siano di mezzo dei form e delle interazioni con il server tali che non vogliamo vengano rieseguite (ad esempio scrittura in un database), anche se conviene comunque prendere provvedimenti lato server, perché se un utente ha l'interprete JavaScript disabilitato il replace() ovviamente non funzionerà.





Stampa questo tutorial





Per navigare correttamente il sito è necessario abilitare i cookies.
Enjoy Open Source!
ffx80bl2

    javascript
 
 
 
          Segnala
          Preferiti





ffx1201