手机物理键

需求:h5登记用户信息页面,用户返回,信息能否保存下来
手机物理键返回时,进行操作,将信息保存到本地缓存
1.mounted生命周期挂载,完成后,判断浏览器是否支持popstate

mounted() {
	// 如果支持 popstate 一般移动端都支持了
	if (window.history && window.history.pushState) {
		// 往历史记录里面添加一条新的当前页面的url
	    history.pushState(null, null, document.URL);
		// 给 popstate 绑定一个方法 监听页面刷新
	    window.addEventListener('popstate', this.fun, false);//false阻止默认事件
	}
	// 获取本地储存的信息
	let addCarInfo = JSON.parse(localStorage.getItem("addCarInfo"));
	if(addCarInfo){
		if(addCarInfo.number){
			this.number = addCarInfo.number;
		}
		if(addCarInfo.car_type){
			this.car_type = addCarInfo.car_type;
		}
	}
}

2.在页面销毁时候,取消默认事件,否则vue路由也会被监听

destroyed(){
    window.removeEventListener('popstate', this.fun, false);//false阻止默认事件
},

3.将监听操作写在methods里面,removeEventListener取消监听内容必须跟开启监听保持一致,所以函数拿到methods里面写

methods:{
    // 自己物理返回键的函数
	fun(){
	    console.log("监听到了");
		if(this.$route.query.car_record_id === undefined){
			let addCarInfo = {
				number : this.number,
				car_type : this.car_type
			}
			localStorage.setItem('addCarInfo',JSON.stringify(addCarInfo));
		}
	},
},

来自:这里

posted @   钱小柒  阅读(165)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示