背景:
程序员三大疑问:
不可能啊,我手机正常啊,你获代码了吗?你再试下?哎呀,为啥写的一样我的报错啊;为啥写的一样我的不报错啊;做项目提测的时候,测试说他手机获取不到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(); } });