2012-04-24 36 views
25

Tôi đang viết mã một bản demo nhỏ cho API lịch sử. Và tôi phải vật lộn với điều này:jQuery ràng buộc sự kiện popstate không được thông qua

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

Nó ghi 'pop: undefined' khi tôi nhấp vào nút 'Previous ...

Nhưng nếu tôi làm điều này thay vì, mọi thứ đang làm việc như mong đợi :

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

nó ghi 'pop: [đối tượng Object]' thời gian này ...

Vì vậy, nó giống như jQuery không vượt qua các đối tượng sự kiện để gọi lại.
Có vấn đề gì với jQuery không? Hay tôi đã làm gì đó?

+0

Trình duyệt nào? Bạn đã thấy http://stackoverflow.com/questions/4688164/window-bind-popstate chưa? –

+0

thx cho bình luận của bạn, nó đã giúp tôi hiểu rõ hơn vấn đề là gì, vì vậy tôi đã thay đổi một chút câu hỏi của mình. Nó không giống với cái bạn chỉ ra, bởi vì nó không phải là vấn đề trong lần tải đầu tiên. –

Trả lời

33

Trong trường hợp đầu tiên, bạn sẽ nhận được một đối tượng sự kiện jQuery chuẩn hóa. Trong trường hợp thứ hai, bạn sẽ nhận được đối tượng sự kiện của trình duyệt. Tôi cho rằng jQuery đã không hoàn tất việc chuẩn hóa tất cả các sự kiện HTML5 mới và các thuộc tính liên quan. Cho đến lúc đó, bạn sẽ cần truy cập đối tượng sự kiện ban đầu. Bạn có thể làm điều đó thông qua đối tượng sự kiện jQuery thông qua thuộc tính originalEvent. Bạn có thể tìm thấy một số chi tiết và ví dụ bổ sung tại đây: stackoverflow.com/questions/7860960/popstate-returns-event-state-is-undefined

event.originalEvent.state 
+0

Rất thú vị! Tôi không nhìn thấy câu hỏi này khi tôi tìm kiếm trước khi hỏi: ( –

+0

Cảm ơn! Tôi muốn lấy tín dụng đầy đủ để bắt nhưng stackoverflow đã làm nó cho tôi. Tôi đã xảy ra để nhận thấy nó trong danh sách liên quan ở lề bên phải. tốt nhất trong nỗ lực phát triển của bạn! – KSev

Các vấn đề liên quan