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

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top