监听器多次/重复执行是因为监听器没有清除,每次都创建了新的监听器
解决方法:要用具名函数,()=>listen 的匿名函数写法不能清除掉定时器
window.addEventListener("message", function listenMsg (event) {
// 具名函数才能移除监听,匿名函数无法移除
window.removeEventListener("message", listenMsg, true)
}, true)
若是不需要使用监听器带的值,可以如下写法:
function listenMsg (){}
window.addEventListener("message", listenMsg, true)
beforeDestroy () {
// 在vue中使用,组件销毁前清除监听器
window.removeEventListener("message", listenMsg, true)
}