postMesage 被多次触发

1.按钮点击的时候会给iframe子页面传值,第一次点击的,子页面收到一次信息,
第二次点击的时候,子页面就收到两条信息,这个按钮点第三次的时候,子页面收到三次信息。在不刷新页面的情况下,第几次点击,子页面就收到几次消息。
`
sendMessageToChildren: function (data, id) {

        this.log('发送数据到游戏页面')
        var f_window = document.getElementById(id);
        if (f_window) {
            var url = f_window.src;
        } else {
            this.log('未获取到iframe信息');
            return
        }
        f_window.contentWindow.postMessage(data, url);
    },

//获取父元素传送的值

    getFatherMsg: function (callback) {
        this.log('游戏面进入监听');
        var _this = this;
        window.addEventListener('message', function (e) {
            _this.log('监听到父页面数据');
            _this.log(e.data);
            callback && callback(e.data);
        }, false);
    },

`

阅读 9.7k
1 个回答

因为你每调用一次getFatherMsg就绑定了一次事件,事件绑定要拿到外面哇

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题