Se cambio l'hash in questo modo: window.location.hash = "main/0/sub/1/na/false";
. L'indirizzo nel browser diventa http://mysite.com/#main/0/sub/1/na/false
. La funzione onhashchange della pagina si attiva e tutto funziona come dovrebbe.Utilizzo della barra in window.location.hash
Tuttavia, in Firebug posso vedere che sto anche inviando una richiesta a: http://mysite.com/main/0/sub/1/na/false
... URL senza hash, che risulta in un 404 silenzioso nella console.
Quando eseguo il debug, scopro che si verifica nel punto window.location.hash
.
Ma, se cambio l'hash in questo modo: window.location.hash = "main=0&sub=1&na=false";
non viene inviata alcuna richiesta aggiuntiva.
Perché la richiesta aggiuntiva viene inviata nel primo esempio?
UPDATE: ho notato che invia la richiesta dopo window.location.hash
e prima (durante?) $(window).bind('hashchange')
. Esempio se ho ...
window.location.hash = 'main/0/sub/1/na/false'; // Breakpoint 1 in Firebug
$(window).bind('hashchange', function(e) {
e.preventDefault(); // Breakpoint 2 in Firebug
e.stopPropagation();
});
Quando si ferma al punto di interruzione 1, nessuna richiesta viene inviata. Quando si ferma al punto di interruzione 2, la richiesta è già stata inviata.
Posso vedere in Apache Tomcat che anche la richiesta viene inviata.
io aggiungo che ho jQuery e jQuery Mobile inserito
UPDATE 2:. Rimozione jQuery Mobile risolve il problema. Comunque, ne ho bisogno:/
UPDATE 3
Se qualcuno è interessato: con jQuery Mobile: http://jsfiddle.net/pioSko/hz5PU/3/
Senza jQuery Mobile: http://jsfiddle.net/pioSko/hz5PU/4/
aprire Firebug o altra applicazione di debug e testare i collegamenti.
Le richieste hanno effettivamente colpito il server? Quale versione di Firebug, Firefox? Non lo vedo su uno molto vecchio qui, né su un nuovo Chrome, quindi credo che questo potrebbe essere un bug da qualche parte. –
Impossibile riprodurre con FF 12.0 e 13.0.1. Ho provato 'window.location.hash =" main/0/sub/1/na/false ";' nella console di Firebug su una pagina a caso, nessuna richiesta di rete osservata. – lanzz
Ho creato un sito fittizio e in esso non riesco a riprodurre questo errore. Pertanto, deve essere più profondo nel codice. – pioSko