Potenziali problemi impostazione window.location.hash
-
13-09-2019 - |
Domanda
Ho qualche codice JavaScript che, ad un certo punto, imposta window.location.hash
ad una stringa specifica. Questo funziona bene in Firefox 3, ma voglio sapere se io incorrere in problemi con questo più tardi, vale a dire è questa una soluzione cross-browser (IE6 incluso)?
Inoltre, io sto usando ReallySimpleHistory. Sarà questo rovinare il suo stato interno?
Grazie
Soluzione
window.location.hash
è stato intorno dal JavaScript è stato introdotto in Netscape Navigator 2 nel 1995. E 'stato supportato da Microsoft in Internet Explorer 3 nel 1996. Penso che si può essere ragionevolmente certi che tutti i browser JS-capable lo supporta.
Da una rapida occhiata attraverso la fonte, sembra come se ReallySimpleHistory fa abbastanza ampio uso di questa proprietà, in modo da potrebbe romperlo. Si potrebbe desiderare di utilizzare il suo metodo add(newLocation)
invece (che funziona impostando window.location.hash
).
Altri suggerimenti
var hash = location.hash.slice(1);
Imposta:
location.hash = '#' + 'string';
Old filo lo so, ma window.location.hash
è soggetta ad un limite di dimensione pure. Se siete di passaggio di grandi quantità di dati, e vuole salvare lo stato nel hash, si potrebbe incorrere in alcuni problemi.
IE vi darà l'errore:
SCRIPT5 - Access denied.
se si tenta di assegnare un hash che è oltre il limite
che è super utile.
Proprio spunti di riflessione.
Tutti i "moderni" (a.k.a A-Graded) i browser permettono di impostare hash e non ricaricare la pagina quando farlo. Quelli che ricaricare la pagina sono alcuni tra i più grandi, come ad esempio Safari 2.0.4 e Opera 8.5x .
mio post Usenet su comp.lang.javascript
in cui spiego in un po 'più in dettaglio.
Si noti inoltre, che HTML5, infine, specifica che hash setter dovrebbe cambiare hash reale, ma Non ricaricare la pagina .
Impostazione window.location.hash
funziona bene in IE6 e IE7.
In alcune occasioni, la lettura window.location.hash
sotto IE6 subito dopo una serie tornerà il vecchio valore, ma il browser è impostato correttamente l'hash. Un esempio:
alert(window.location.hash);
window.location.hash = '#newHash';
/* Sometimes, it will return the old value,
I haven't figured out why it does that, and
it's rather rare. */
alert(window.location.hash);
Se si sta solo usando per impostarlo, non si dovrebbe incorrere in alcun problema.