背景:

程序员三大疑问:

  1. 不可能啊,我手机正常啊,你获代码了吗?你再试下?
  2. 哎呀,为啥写的一样我的报错啊;
  3. 为啥写的一样我的不报错啊;

做项目提测的时候,测试说他手机获取不到sessionStorage,我试了下我手机和服务端同事的手机都可以获取到。经查:测试手机为IOS,而前端(鄙人)和后端的手机都是Android,我第一时间想到了缓存。如下:

   mounted: function () {
        this.initPageData();
        this.judgeShowSpread();
   },
    methods: {
		 // 初始化页面数据
        initPageData () {
            this.medicOrg = window.sessionStorage.getItem('medicOrg') || window.PAGE_DATA.medicOrg; // 获取修改后的机构
            this.appointmentCode = window.PAGE_DATA.appointmentCode; // 初始化项目标识代码
            this.communityHospitalId = window.sessionStorage.getItem('medicOrgId') || window.PAGE_DATA.communityHospitalId; // 初始化机构id
        },
    }

如果页面为缓存而得到的,就不会走vuemounted钩子,则无法及时获取到sessionStorage
目前没有100%确认这个页面缓存和操作系统有关,
解决:

window.addEventListener('pageshow', function (e) { // 监听页面缓存,若缓存则刷新
    if (e.persisted) {
        window.location.reload();
    }
});
Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐