2012-03-28 28 views
58

Khi tôi sử dụng jQuery nghe sự kiện để xử lý sự kiện thông báo, như dưới đây:jQuery không hỗ trợ sự kiện postmessage?

$(window).on('message', function(e) { 
    var data = e.data; // data = undefined 
}); 

dữ liệu là undefined! Tôi chắc chắn rằng tôi đã chuyển dữ liệu đến cửa sổ hiện tại. Bởi vì nếu tôi sử dụng "addEventListener", mọi thứ diễn ra tốt đẹp!

Vì vậy, vấn đề là gì?

Trả lời

98

jQuery có thể đang xử lý trước thuộc tính data của sự kiện và thao tác này có thể không hỗ trợ đúng sự kiện message (chưa).

Hãy thử sử dụng originalEvent tài sản để lấy dữ liệu của bạn:

$(window).on("message", function(e) { 
    var data = e.originalEvent.data; // Should work. 
}); 
+0

Rất hữu ích, cảm ơn bạn rất nhiều. – stefan

+2

Một +1 cho bạn, điều này chỉ giúp tôi ngừng kéo tóc ra. – ceejayoz

+1

Cách tốt nhất để xử lý "onmessage" trong IE là gì? – grim

11

Một số trình duyệt sử dụng sự kiện "onmessage". Tôi đề xuất cải thiện một chút cho câu trả lời trước cho khả năng tương thích tăng:

$(window).on("message onmessage", function(e) { 
    var data = e.originalEvent.data; 
}); 
Các vấn đề liên quan