2011-09-19 15 views
5

Estamos trabajando en un proyecto utilizando window.history.replacestate. Lamentablemente, no somos muy buenos en javascript.¿Qué son los "datos" en window.history.replaceState

Esencialmente lo estamos usando para reemplazar cualquier número de enlaces cortos al enlace 'raíz'. Por ejemplo:

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

sería todo 'aparecer' como:

domain.com/nice_url 

que no tiene que trabajar tanto vamos a poner el código JavaScript en la página y en los navegadores lo hace, entonces genial y si no lo hace, obtienen el código corto.

Nota: ¡no queremos queremos historia!

Así que sólo estamos usando:

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

La cuestión es que esto parece funcionar, pero no entendemos el (los datos) parte 'Objeto'.

¿Qué es exactamente?

Respuesta

3

puede establecer el parámetro Object a los datos arbritary, que estarán disponibles en el parámetro state del objeto event que está disponible en caso popstate.

En otras palabras, puede configurarlo para lo que desee, para ayudarlo a restaurar la página web al estado deseado cuando el usuario navega por su historial.

Para obtener más información, consulte el 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 (Lee rápidamente lo que es el diablo con el estado emergente). Entonces ... en nuestra instancia, ya que no necesitamos hacer nada si el usuario regresa a través del historial porque la Url funcionará en un estado modificado, ¿podríamos dejar esto vacío? –

+0

@Mike: lo más probable es que lo haga. Si un usuario navega hacia atrás en su historial a una página que está en la pila del historial a través de 'pushState' o' replaceState', la página no se actualizará automáticamente; Depende de usted capturar el evento 'onpopstate' y cambiar la página al estado deseado. – Matt