Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
4.2k views
in Technique[技术] by (71.8m points)

vue中在main.js文件添加addeventListen 打包之后,只执行了一次

场景:
项目中使用了ifram + postmessage进行跨域的 , 我在a页面发送postmessage事件 , 在main.js中使用window.addeventListen进行事件监听

a页面:

      // 执行跨域登陆传参
      document.getElementById('child')
        .contentWindow.postMessage({
          handleType: 'loginIfram',
          partyids: this.checkList.join(","),
          id: this.id,
          loginInfo: {
            pwd: this.userDate.userPwd,
            tel: this.userDate.telephone
          }
        },
          this.domainSrc
        )

main.js文件:


window.addEventListener('message', function (e) {
    let eOrigin = e.origin + '/fodr/fodrmediator'
    const openUrl = `${mainUrl}/#/viewRoom?partyids=${e.data.partyids}&id=${e.data.id}`
    console.log('验证信息是否跨域=>>', e.data.handleType == 'loginIfram', eOrigin == origin);


    if (e.data.handleType == 'loginIfram' && eOrigin == origin) { //这样来验证确保安全
        const newWindow = window.open(); //提前申明这样防止直接打开网页谷歌拦截问题
        console.log('data===>', e.data);
        // 重新登录一遍
        login({
            password: e.data.loginInfo.pwd,
            username: e.data.loginInfo.tel
        }).then(res => {
            if (res.code == 1) {
                console.log('当前登陆成功');
                newWindow.location.href = openUrl;
            }
        })
    }
})

问题:
我在本地测试npm run serve的时候 测试他是一直监听 ,并且打印日志的 , 当我npm run build的时候,这些日志只打印一次 ,所以想请问是不是main.js文件添加的监听事件也只是执行一次 , 在页面进入的时候执行一次
npm run serve , 日志是一直打印的
image.png
npm run build 之后 只在项目启动之后打印一次
image.png

江湖救急 急~


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

??你只post一次就只打印一次,有什么问题?


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...