babradu 2021-04-23 09:48 采纳率: 0%
浏览 2451

vue 开发 window.addEventListener('popstate',..)

vue中在mounted中使用了两个监听  window.addEventListener('popstate',.....)其中的方法不一样 但是不生效;单独使用的话是生效的

这个问题怎么解决呀   求解

methods:{
 goBack() {
      window.history.back()
      history.pushState(null, null, document.URL)
    },
},


mounted(){

// 第一个监听addEventListener

 var that = this

    let name = that.$route.query.name

    history.pushState(null, null, document.URL)

    window.addEventListener(

      'popstate',

      (e) => {

        e.preventDefault()

        history.pushState(null, null, document.URL)

        that.$router.push({

          path: '/',

          query: {

            name,

          },

        })

        // console.log(mode)

        // console.log("我监听到了浏览器的返回按钮事件啦");//根据自己的需求实现自己的功能

      },

      false

    )

//第二个监听 addEventListener 

 if (window.history && history.pushState) {
      history.pushState(null, null, document.URL)
      window.addEventListener('popstate', this.goBack, false)
    }
}

 

  • 写回答

1条回答 默认 最新

  • 崽崽的谷雨 2021-04-23 10:51
    关注

    应该是覆盖了,后面的覆盖前面的

    我试了一下不会覆盖啊 难道vue做了特殊处理

    <!DOCTYPE html>
    <html lang="en">
    
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>抛物线</title>
        <style>
            * {
                margin: 0;
                padding: 0;
            }
    
            .box {
                /* width: 500px;
                height: 700px; */
                border: 1px solid red;
            }
        </style>
    </head>
    
    <body>
        <div class="box">
            <div class="b" id="b">66</div>
        </div>
    
    
    </body>
    <script>
        let b = document.getElementById("b");
        b.addEventListener('click', () => {
            console.log("11")
        })
        b.addEventListener('click', () => {
            console.log("88")
        })
    
    </script>
    
    </html>
    评论

报告相同问题?