vue组件与iframe通信,防止多次触发messag事件

276 阅读1分钟

Vue组件中使用iframe,第二次进入iframe页面时,注册的messag被多次触发.

我的注册代码是:

 mounted() {
    window.addEventListener('message', this.handleMessage)
  },

iframe中通知事件触发的代码:

 window.parent.postMessage({ type: 'saveReport', value: res, formData: postData }, '*');

通过打印可知,多次进入iframe页面,触发iframe事件条件时:iframe中通知一次,但是包含iframe的vue页面监听事件执行多次

解决办法

在destory的生命周期中注销此事件,每次进入页面重新监听

 destroyed() {
    window.removeEventListener('message', this.handleMessage)
  },