2012-03-28 4 views
58

는 :jQuery는 postmessage 이벤트를 지원하지 않습니까? 나는 다음과 같은 메시지 이벤트를 처리 할 jQuery를 이벤트 리스너를 사용하는 경우

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

데이터는 정의되지 않습니다! 나는 현재 창에 데이터를 전달했다고 확신한다. 왜냐하면 "addEventListener"를 사용하면 모든 것이 잘됩니다!

그래서 문제가 무엇입니까?

답변

98

jQuery가 이벤트의 data 속성을 사전 처리 할 수 ​​있으며이 작업이 message 이벤트를 제대로 지원하지 않을 수 있습니다.

데이터를 가져 오도록 originalEvent 속성을 사용하십시오 :

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

정말 고마워요. – stefan

+2

+1 당신을 위해, 이건 그냥 내 머리카락을 끌어 당기는 걸 도왔습니다. – ceejayoz

+1

IE에서 "onmessage"도 처리하는 가장 좋은 방법은 무엇입니까? – grim

11

일부 브라우저가 "의 onMessage"이벤트를 사용합니다. 호환성 향상을 위해 이전 답변에 약간의 개선점을 제안합니다.

$(window).on("message onmessage", function(e) { 
    var data = e.originalEvent.data; 
});