本文共918字 阅读约需3分钟
转行前端不久,遇到好几个问题,虽然磕磕碰碰但是总算是打死了这一个个的拦路虎;
今天分享一个昨天天刚解决的问题:区分浏览器关闭和刷新的方法;
本人不知怎么就把代码逻辑写到了这里话不多说直接切入正文。
需求:
我需要在浏览器关闭的时候清除掉localstorage中的一个值,但是在刷新的时候不对localstorage进行操作;
了解:
浏览器关闭执行的是 beforeunload , unload 这两个事件;
而浏览器刷新执行的是beforeunload, unload, load 三个事件;
思路:
虽然刷新与关闭都会走onbeforeunload与onunload,但可能因为刷新在加载新页面前内部机制还需要做一些准备工作,所以刷新事件在执行到onunload事件时,用的时间会比关闭事件时间长。
所以,通过时间差来判断浏览器是刷新还是关闭,浏览器执行beforeunload的时候给一个开始时间,执行unload的时候给一个结束时间;判断一下时间差;我设置的是5毫秒来区分浏览器的关闭和刷新,具体的时间最好还是亲自测一下;
最后贴上我的代码
我是胡图,让我们一路同行
领取专属 10元无门槛券
私享最新 技术干货