【JavaScript】「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>