IE8でwindow.postMessage()して返ってくるEventはMessageEventではない


例えばiframeに対してpostMessage()でなにか通信をしたい時、

parent
var iframe = $('iframe');
iframe.contentWindow.postMessage('moge', '*');

この時、iframe側で受け取ったEventはMessageEventという型になっているんだけど、
IE8ではただのEvent型になっているので注意が必要。

そもそもMessageEventというオブジェクト自体が定義されていないのでevt instanceof MessageEventみたいなことはできない。

iframe
window.addEventListener('message', function(evt) {
   console.log(evt instanceof MessageEvent)); // IE8で死ぬ。死は避けられない。人はいつか死ぬ。
});