【无标题】

一、背景

该需求主要为了判断用户是怎么样到达当前页面,是从上一页面返回还是刷新当前页面,如果从上一页面返回则需要从sessionStorage对象中获取对应属性值,并渲染。如果是刷新当前页面则需要移除sessionStorage对象中得属性值,并且还原元素样式。

二、代码


                    if (performance.navigation.type === performance.navigation.TYPE_BACK_FORWARD) {
                        o.busTypeView = sessionStorage.getItem('busTypeView');
                        o.busTypeStatus = sessionStorage.getItem('busTypeStatus');
                        o.StdHoursCtrl = sessionStorage.getItem('StdHoursCtrl');
                        o.isShowDraft = sessionStorage.getItem('isShowDraft');
                        //$(`input[name="type"][value="${o.data.WorkListType}"]`).prop('checked', true);
                        form.render()
                    } else { // 刷新页面
                        sessionStorage.removeItem('busTypeView');
                        sessionStorage.removeItem('busTypeStatus');
                        sessionStorage.removeItem('StdHoursCtrl');
                        sessionStorage.removeItem('isShowDraft');
                        $(`input[name="type"][value="${o.busTypeView}"]`).prop('checked', false);
                        $(`input[name="type"][value="${o.busTypeStatus}"]`).prop('checked', false);
                        $(`input[name="type"][value="${o.StdHoursCtrl}"]`).prop('checked', false);
                        $(`input[name="type"][value="${o.isShowDraft}"]`).prop('checked', false);
                    }

  1. 检查导航类型:
    • 使用performance.navigation.type来检测用户是如何到达当前页面的。如果值为performance.navigation.TYPE_BACK_FORWARD,说明用户是通过浏览器的前进或后退按钮来到这个页面的。
  2. 恢复页面状态(前进/后退时):
    • 在这种情况下,从sessionStorage中恢复之前保存的页面状态变量:busTypeViewbusTypeStatusStdHoursCtrl、和isShowDraft
    • 虽然注释掉了设置表单控件选中状态的代码($(input[name="type"][value="${o.data.WorkListType}"]).prop('checked', true);),但根据上下文,这部分原本可能用于根据恢复的值设置表单中的选项状态。
    • 调用form.render()可能是为了更新表单渲染,确保UI与恢复的状态一致,这通常在使用前端框架如layui时会出现。
  3. 刷新页面时的操作:
    1. 如果页面不是通过前进或后退操作加载的(即用户刷新页面或直接访问),则从sessionStorage中移除这些状态变量,以准备加载初始页面状态或新的数据。
    2. 接下来的几行代码尝试取消选中某些表单项,但这里存在一个逻辑错误:它试图根据之前保存的值取消选中表单的选项,而实际上应该根据当前逻辑或默认状态来设定这些选项。注意,这里的代码假设o.busTypeView等变量可以直接作为value属性的值来查找对应的输入元素,这可能与实际情况不符,除非这些变量确实直接对应于表单中input元素的value

三、performance.navigation介绍

performance.navigation 是浏览器提供的一个性能接口,它是 PerformanceNavigation 接口的实例,属于Web Performance API的一部分。这个接口提供了关于当前页面加载方式的信息,主要用于帮助开发者了解用户是如何到达当前页面的,比如是通过点击链接、刷新、后退/前进按钮、或者是其他方式。

performance.navigation 主要有以下几个属性,用来描述导航类型:

  • type: 这个属性返回一个整数值,表示网页的加载来源。可能的值包括:
    • 0performance.navigation.TYPE_NAVIGATE): 表示常规的页面加载,如用户点击链接、地址栏输入URL、通过脚本操作加载新页面等。
    • 1performance.navigation.TYPE_RELOAD): 表示页面是通过刷新操作加载的。
    • 2performance.navigation.TYPE_BACK_FORWARD): 表示页面是通过浏览器的后退或前进按钮加载的。
    • 255performance.navigation.TYPE_RESERVED): 保留值,目前未使用。

通过检查 performance.navigation.type 的值,开发者可以做出相应的逻辑处理,例如在用户通过后退按钮回到页面时恢复之前的状态,或者在页面刷新时清除一些临时数据,以此来提升用户体验或优化应用性能。

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值