2012-04-24 14 views
25

Kodowałem trochę demo interfejsu History API. A ja zmaga się z tym:Zdarzenie popsynkowe jQuery bind nie zostało przekazane

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

Loguje „pop: niezdefiniowane”, po kliknięciu na przycisk „Wstecz” ...

Ale jeśli mogę to zrobić w zamian, wszystko działa tak jak oczekiwano :

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

loguje 'Pop: [object Object]' tym razem ...

Tak to jest jak jQuery nie przechodzi obiekt zdarzenia do wywołania zwrotnego.
Czy jest jakiś problem z jQuery? A może coś zepsułem?

+0

Która przeglądarka? Widziałeś już http://stackoverflow.com/questions/4688164/window-bind-popstate? –

+0

thx za komentarz, pomógł mi lepiej zrozumieć, co jest problem, więc zmieniłem trochę moje pytanie. To nie to samo, co wskazujesz, ponieważ nie jest to problem przy pierwszym ładowaniu. –

Odpowiedz

33

Po pierwsze, otrzymujesz znormalizowany obiekt zdarzenia jQuery. W drugim przypadku otrzymujesz obiekt zdarzenia przeglądarki. Zakładam, że jQuery nie ukończył normalizowania wszystkich nowych zdarzeń HTML5 i powiązanych atrybutów. Do tego czasu będziesz musiał uzyskać dostęp do oryginalnego obiektu zdarzenia. Możesz to zrobić poprzez obiekt zdarzenia jQuery za pośrednictwem właściwości originalEvent. Tutaj znajdziesz dodatkowe informacje i przykłady: stackoverflow.com/questions/7860960/popstate-returns-event-state-is-undefined

event.originalEvent.state 
+0

Niezły chwyt! Nie widziałem tego pytania, gdy szukałem przed pytaniem :( –

+0

Dziękuję! Chciałbym wziąć pełny kredyt za złapanie, ale stackoverflow zrobił to dla mnie, zdarzyło mi się zauważyć to na liście pokrewnej na prawym marginesie. najlepsze w twoich wysiłkach na rzecz rozwoju! – KSev

Powiązane problemy