「Twitter widgets.js postmessage onmessage namespace : “twttr:cookies”」でお困りの方へ

とあるJSの不具合に悩まされていたのですが、Twitterの widgets.js を読み込んでいる場合、稀にonmessageが発火されてしまうことが原因でした。面倒だったのは毎回発火されるわけではないという点。私の環境では以下のようなデータが受信されました。

{
    cookies:{}
    namespace:"twttr:cookies"
}

対策としては、未定義のデータを受信しないようにするしかないですね。。。

<script>
    //必ず postMessage で { type:'send' } を送ること
    $(window).on('message', function (e) {
        var data = JSON.parse(e.originalEvent.data);
        if(data.hasOwnProperty('type') && data.type === 'send') {
            alert('正常に受信しました。');
        } else {
            alert('未定義のメッセージを受信しました');
        }
    });
</script>