目前接到一个需求如下:
SpringMVC的项目部署后,接入了客户的统一认证平台(基于token的方式),需要实现一个功能,在浏览器第一次访问系统主页时,需要执行一个ajax后台操作,如果多次打开页签则不执行,刷新也不执行,但是如果关闭所有页签后再次打开第一个时,需要执行,也就是说每次打开该网站主页并且只有一个页签打开时,需要执行一个后台方法。
目前我准备的做法是:使用localstorage记录打开主页的次数,每次打开一个就增加一个,刷新不做处理,如果关闭一个就再减去一个,这样只能再第一次打开时调用后台方法,
但是目前遇到一个问题,就是无法判断浏览器时刷新还是关闭,网上找了一些,也没有找到准确的做法,目前主要能兼容谷歌、火狐、360等浏览器就行
求教各位!
我百度搜索过,给的方案是判断时间。
刷新前记录时间,加载后读取时间和现在时间对比,5秒内是刷新,超过5秒就是关闭。
刷新调用的是location.reload,重新打开应该也是调用的这个方法
有一个属性可能可以解决这个问题
window.performance.navigation 记载网页导航的相关信息, 有一个type属性
0 页面首次加载 1 页面被刷新 2 页面是通过其他页面返回的
刷新过的话这个type就是1,首次加载就是0,可以在运行这个方法的时候判断一下,这个值,不过我不确定这个值的更新执行事件是否会在你的方法执行事件之前,可以试一下
弱弱的问一下为啥不用sessionStorage?