web-dev-qa-db-fra.com

Événement popstate de liaison jQuery non passé

Je code une petite démo pour l'API Historique. Et je me bats avec ça:

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

Il enregistre 'pop: undefined' lorsque je clique sur le bouton 'Précédent' ...

Mais si je fais cela à la place, les choses fonctionnent comme prévu:

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

Il enregistre cette fois "pop: [object Object]" ...

C'est donc comme si jQuery ne transmet pas l'objet événement au rappel.
Y a-t-il un problème avec jQuery? Ou ai-je gâché quelque chose?

25
Jocelyn LECOMTE

Dans le premier cas, vous obtenez un objet événement jQuery normalisé. Dans le deuxième cas, vous obtenez l'objet événement du navigateur. Je suppose que jQuery n'a pas terminé de normaliser tous les nouveaux événements HTML5 et les attributs associés. Jusque-là, vous devrez accéder à l'objet d'événement d'origine. Vous pouvez le faire via l'objet événement jQuery via la propriété originalEvent. Vous pouvez trouver des détails supplémentaires et des exemples ici: stackoverflow.com/questions/7860960/popstate-returns-event-state-is-undefined

event.originalEvent.state
37
KSev