2011-09-19 20 views
5

Stiamo lavorando su un progetto usando window.history.replacestate. Purtroppo non siamo molto bravi a javascript.Che cosa sono i 'dati' in window.history.replaceState

In sostanza lo stiamo usando per sostituire qualsiasi numero di collegamenti brevi al collegamento "root". Per esempio:

domain.com/fJfk8 
domain.com/9dkDl 
domain.com/fjgdD 

sarebbero tutti 'apparire' come:

domain.com/nice_url 

Non deve lavorare così metteremo il codice JavaScript nella pagina e nei browser lo fa allora grande e se non lo fa, ottengono lo shortcode.

Nota: noi non vogliono la cronologia!

Quindi stiamo solo usando:

window.history.replaceState('Object','Nice URL Title', '/nice_url'); 

La questione è che questo sembra funzionare, ma non capiamo il 'Oggetto' (dati) parte.

Che cosa è esattamente?

risposta

3

È possibile impostare il parametro Object ai dati arbritary, che saranno disponibili nel parametro state dell'oggetto event che è disponibile in caso popstate.

In altre parole, è possibile impostarlo in base a ciò che si desidera, per consentire il ripristino della pagina Web allo stato desiderato quando l'utente naviga nella cronologia.

Per ulteriori informazioni, vedere MDC documentation on window.history.

window.history.replaceState({ 
    foo: 'bar' 
}, 'Nice URL Title', '/nice_url'); 

window.onpopstate = function (e) { 
    if (typeof e.state == "object" && e.state.foo == "bar") { 
     alert("Blah blah blah"); 
    } 
}; 

window.history.go(-1); 
+0

OK (legge rapidamente cosa diavolo è stato ..). Quindi ... nel nostro caso, dato che non abbiamo bisogno di fare nulla se l'utente ritorna via cronologia perché l'Url funzionerà in stato modificato - potremmo lasciarlo vuoto? –

+0

@Mike: molto probabilmente lo farai. Se un utente naviga all'indietro nella propria cronologia su una pagina che si trova nello stack della cronologia tramite 'pushState' o' replaceState', la pagina non si aggiornerà automaticamente; sta a te catturare l'evento 'onpopstate' e cambiare la pagina allo stato desiderato. – Matt