2012-04-24 4 views
25

History API에 대한 약간의 데모를 코딩하고 있습니다. ... 나는 '이전'버튼을 클릭하면jQuery bind popstate 이벤트가 전달되지 않았습니다.

을하지만이 대신 할 경우, 상황이 예상처럼 작동됩니다

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

그것은 기록 '정의되지 팝'그리고 나는이와 사투를 벌인거야 :

그것은 '팝 : [개체 개체]'기록
window.onpopstate = function(event) { 
    console.log('pop: ' + event.state); 
}; 

이 시간을 ...

그래서는 콜백 이벤트 객체를 전달하지 않습니다 jQuery를 같아요.
jQuery에 문제가 있습니까? 아니면 뭔가 엉망이 되었습니까?

+0

어떤 브라우저가 좋을까요? http://stackoverflow.com/questions/4688164/window-bind-popstate를 아직 보지 못하셨습니까? 귀하의 의견을 –

+0

thx, 그것은 내게 더 나은 무엇이 문제인지 이해하는 데 도움이, 그래서 조금 내 질문을 변경했습니다. 첫 번째로드에서는 문제가 아니기 때문에 사용자가 가리키는 것과 동일하지 않습니다. –

답변

33

첫 번째 인스턴스에서는 정규화 된 jQuery 이벤트 객체를 얻게됩니다. 두 번째 인스턴스에서는 브라우저의 이벤트 객체를 가져옵니다. jQuery가 모든 새로운 HTML5 이벤트 및 관련 속성을 표준화하지 못했다고 가정합니다. 그때까지는 원래 이벤트 객체에 액세스해야합니다. originalEvent 속성을 통해 jQuery 이벤트 객체를 통해이를 수행 할 수 있습니다. 여기에 몇 가지 추가 세부 정보와 예가 나와 있습니다. stackoverflow.com/questions/7860960/popstate-returns-event-state-is-undefined

event.originalEvent.state 
+0

좋은 캐치! 내가 묻기 전에 검색했을 때 나는이 질문을 보지 못했다. ( –

+0

고마워! 캐치에 대한 완전한 신용을 얻고 싶지만 stackoverflow는 나를 위해 그것을했다. 우연한 일이 일어났다. 당신의 개발 노력에서 최고! – KSev

관련 문제