Safari无痕浏览模式埋坑之storage失效 - VicSh/my-web-log GitHub Wiki

iphone无痕浏览模式下,h5的storage失效

今天做一个h5的项目时发现,公司总是有一台测试机无法正常显示页面,经过各个机器对比,原来这部手机开启了无痕浏览模式,导致sessionStorage失效,经查阅资料,封装了一个解决方法:

说明

  • 判断浏览器是否支持sessionStorage
  • 捕捉sessionStorage在浏览器中的异常,若存在异常,则为无痕模式
function isSessionStorage(){
	// 判断浏览器是否支持sessionStorage
	if (!window.sessionStorage) {
	    	alert('您的浏览器不支持缓存')
	    	return;
	}
	// 捕捉iphone下是否为无痕浏览模式
	var isPrivateMode = false
	try {
	    	sessionStorage.setItem('_isPrivateMode', '1')
	    	sessionStorage.removeItem('_isPrivateMode')
	    	isPrivateMode = false
	} catch (e) {
	    	isPrivateMode = true
	}
	// 判断浏览器是否支持sessionStorage
	if (isPrivateMode) {
	    	alert('您的浏览器处于无痕浏览模式')
	    	return;
	}
}

总结

之前没有用过try{}catch(){},这里用到了发现还是很有用处的