2012-04-24 13 views
25

Estoy codificando una pequeña demostración para la API de historial. Y yo estoy luchando con esto:jQuery bind evento popstate no pasado

$(window).bind('popstate', 
    function(event) { 
     console.log('pop: ' + event.state); 
    }); 

registra 'pop: no definido' cuando hago clic en el botón 'Anterior' ...

Pero si hago esto en cambio, las cosas están funcionando como se esperaba :

window.onpopstate = function(event) { 
    console.log('pop: ' + event.state); 
}; 

registra 'pop: [object Object]' esta vez ...

así que es como jQuery no pasa el objeto de evento a la devolución de llamada.
¿Hay algún problema con jQuery? ¿O desordené algo?

+0

¿Qué navegador? ¿Ya has visto http://stackoverflow.com/questions/4688164/window-bind-popstate? –

+0

Gracias por su comentario, me ayudó a comprender mejor cuál es el problema, así que cambié un poco mi pregunta. No es lo mismo que el que señala, porque no es un problema en la primera carga. –

Respuesta

33

En la primera instancia, obtiene un objeto de evento jQuery normalizado. En la segunda instancia, obtendrá el objeto de evento del navegador. Supongo que jQuery no ha completado la normalización de todos los nuevos eventos HTML5 y atributos relacionados. Hasta entonces, necesitarás acceder al objeto de evento original. Puede hacerlo a través del objeto de evento jQuery a través de la propiedad originalEvent. Puede encontrar algunos detalles adicionales y ejemplos aquí: stackoverflow.com/questions/7860960/popstate-returns-event-state-is-undefined

event.originalEvent.state 
+0

¡Buena captura! No vi esta pregunta cuando busqué antes de preguntar :( –

+0

Gracias. Quisiera aprovechar todo el mérito de la captura, pero stackoverflow lo hizo por mí. Lo noté en la lista relacionada en el margen derecho. lo mejor en tus esfuerzos de desarrollo! – KSev

Cuestiones relacionadas