2010-11-03 11 views
8

E 'possibile con JavaScript cambiare l'URL del browser, ma non uscire dalla pagina?Come modificare l'URL visualizzato nel browser senza uscire dalla pagina

+0

Intendi cambiare il testo nella barra degli indirizzi senza effettivamente andare lì? – Adam

+0

Per favore cerca prima nel sito: http://stackoverflow.com/search?q=javascript+change+url+ – BGerrissen

+2

Possibile duplicato di * molte * domande. Ad esempio: [Modifica dell'URL con jQuery senza ricaricare la pagina] (http://stackoverflow.com/questions/4013122/changing-the-url-with-jquery-without-reloading-the-page) – Robusto

risposta

13

Nei browser precedenti, è possibile non modificare l'URL nella barra degli indirizzi senza uscire dalla pagina. Ma puoi modificare la parte dell'URL dell'hash senza uscire dalla pagina. Vale a dire che è possibile modificare www.example.com a www.example.com#new_text con JavaScript window.location.hash = "new_text"; tutto ciò che è successivo allo # può essere modificato.

Tuttavia, in HTML5 è disponibile una nuova API di cronologia che consente di modificare la parte dell'URL dopo il dominio. Pertanto non è ancora possibile modificare www.example.com in www.BankOfAmerica.com (per motivi di sicurezza), ma è possibile modificare www.example.com/foo in www.example.com/bar.

history.pushState("object or string representing the state of the page", "new title", "newURL"); 

Controllare When can I use... per vedere che i browser supportano HTML5 gestione cronologia della sessione e sostenere il nuovo metodo pushState.

Inoltre, esiste una libreria JavaScript che normalizza l'API della cronologia attraverso i browser e cambia l'URL nei nuovi browser e utilizza la parte hash per i vecchi browser. Vedi history.js.

+1

sì , puoi. semplicemente non so come Facebook lo fa, ma ovviamente sono super-programmatori. Modifica: ho appena scoperto come: http://stackoverflow.com/questions/6955430/change-url-on-ajax-request –

+0

@Eduard Luca Grazie per avermelo mostrato, ho aggiornato la risposta di conseguenza. – Adam

0

È possibile modificare qualsiasi cosa dopo il segno di cancelletto (#) poiché viene frequentemente utilizzato nelle applicazioni Ajax come la ricerca di Google e il nuovo Twitter. (Ecco perché tutto appare dopo il segno cancelletto in quelle app.) Ma se cambi qualcos'altro, la pagina dovrà essere ricaricata.

5

Presumo che si stia parlando dell'URL visibile nella barra degli indirizzi.

La risposta è No, è una vulnerabilità di sicurezza importante quando un'applicazione cerca di indurre gli utenti a pensare che si trovano in un altro sito.

-1

No, non è possibile. E, ogni volta che è possibile, questo è un bug del browser (conosco i precedenti bug di sicurezza relativi a questo comportamento e sono stati risolti in passato).

In realtà ... È possibile modificare l'ultima parte dell'URL, qualsiasi cosa dopo il carattere #. Ma il nome host e il percorso non possono essere modificati senza uscire dalla pagina.

Problemi correlati