美文网首页
在vue中监听window事件

在vue中监听window事件

作者: btfrankenstein | 来源:发表于2017-03-22 20:28 被阅读0次

    今天有需求是当PC用户在完成第三方支付之后,又在浏览器切换回我自己页面时,需要捕获用户回到页面的事件,进而自动刷新页面。

    思考过后发现使用 window.onfocus 可以达到这个需求。只是不知道 vue 的是如何监听 window 事件的。

    一开始一直想着用 vuev-on 绑定在哪里监听,但是找不到方式。后来gogole了一下发现尤大说其实直接在 ready 的时候给 window 添加事件就好了,没必要使用 v-on 或者其他 vue 的方法。

    大概的代码如下

    // pay.vue
    methods: {
      handleWinFocus() {
        alert('you are in page now');
      },
    },
    ready() {
      window.addEventListener('focus', this.handleWinFocus);
    },
    beforeDestroy() {
      window.removeEventListener('focus', this.handleWinFocus);
    },
    

    值得注意的是一开始没有在 beforeDestroy 的时候解除事件绑定。就会发现跳出 pay 页面之后再回来,然后切换标签页,会打印两次信息。是因为事件一直存在在页面中,而单页面应用没有刷新,也就不会自己解绑,因而绑定了两次事件。所以要在 beforeDestroy 里面手动解绑。

    相关文章

      网友评论

          本文标题:在vue中监听window事件

          本文链接:https://www.haomeiwen.com/subject/wylanttx.html