从外链回退到vue应用不触发生命周期、beforeRouterEnter等钩子函数的问题

更新日期: 2020-04-11阅读: 2k标签: 外链
在iphoneX及以上版本从外链回退不触发事件,7P,7没发现这个bug
安卓上自测没有发现这个问题

最近做项目中发现了一个问题,iphoneX及以上版本从当前vue应用中跳转到外部链接然后在回退到vue应用里面,beforeRouterEnter没有被触发。

由于在其他手机上测试没有问题,所以一开始我以为代码写的有问题,然后就开始漫长的找坑之路,后来我将事件放到了created、mounted里面也没有执行代码,那就证明有可能页面被缓存了,所以这些钩子没有触发。

所以百度了一下,找到了onpageshow这个事件

onpageshow 事件在用户浏览网页时触发。
onpageshow 事件类似于onload事件,onload 事件在页面第一次加载时触发, onpageshow 事件在每次加载页面时触发,即 onload 事件在页面从浏览器缓存中读取时不触发。

也就是当页面显示到前台的时候就触发pageshow这个事件,所以我就在created里面注册了这个事件并将要执行的代码写进去,再次真机调试之后发现解决这个问题了。

created () {
    window.addEventListener('pageshow', () => {
        //外链回退到vue应用要执行的代码
    })
}

记录下来避免以后再次跳坑

链接: https://www.fly63.com/article/detial/8934

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!