背景:
程序员三大疑问:
- 不可能啊,我手机正常啊,你获代码了吗?你再试下?
- 哎呀,为啥写的一样我的报错啊;
- 为啥写的一样我的不报错啊;
做项目提测的时候,测试说他手机获取不到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
},
}
如果页面为缓存而得到的,就不会走vue
的mounted
钩子,则无法及时获取到sessionStorage
,
目前没有100%确认这个页面缓存和操作系统
有关,
解决:
window.addEventListener('pageshow', function (e) { // 监听页面缓存,若缓存则刷新
if (e.persisted) {
window.location.reload();
}
});