js禁用回退键[backspace键]浏览历史跳转的解决办法

简介: 在做公司的CMS的时候出现了一些js的问题,其中有一个就是在页面非输入框中按下回退键[backspace键]时页面会跳转到上一页,但是上一页加载失败,说会话已过期, 问题描述到此结束. 解决办法: 第一直觉就是上网搜答案,但是结果不理想。

在做公司的CMS的时候出现了一些js的问题,其中有一个就是在页面非输入框中按下回退键[backspace键]时页面会跳转到上一页,但是上一页加载失败,说会话已过期, 

问题描述到此结束.

解决办法:

第一直觉就是上网搜答案,但是结果不理想。

第二上论坛上看看有没有解决办法,到是找到一个类似的问你

‘在IE里按backspace键时如何知道是发生在input还是在中文输入法框?’

地址:http://www.iteye.com/problems/3272

问题类似,但是不是解决办法,还好的就是我根据他的思路自己试着找解决办法。

多谢fuwang

下面是我代码:

window.onload=function(){
	/****************************
	 * 作者:q821424508@sina.com	*
	 * 时间:2012-07-12			*
	 * version:1.0				*
	 * 							*
	 ****************************/
	document.getElementsByTagName("body")[0].onkeydown =function(){
		if(event.keyCode==8){
			var elem = event.srcElement;
			var name = elem.nodeName;
			
			if(name!='INPUT' && name!='TEXTAREA'){
				event.returnValue = false ;
				return ;
			}
			var type_e = elem.type.toUpperCase();
			if(name=='INPUT' && (type_e!='TEXT' && type_e!='TEXTAREA' && type_e!='PASSWORD' && type_e!='FILE')){
				event.returnValue = false ;
				return ;
			}
			if(name=='INPUT' && (elem.readOnly==true || elem.disabled ==true)){
				event.returnValue = false ;
				return ;
			}
		}
	}
}

问题解决了,

使用说明:

1.把代码直接复制到页面,【页面必须含有body标签】

2.放到任意一个页面引用的js文件中【直接放到文件的最开始,或最后,不要放到方法里面,页面必须含有body标签】

以上为1.0版本,只支持IE:

-------------------------------------------------------分割线------------------------------------------------------------

以下为2.0版本,支持IE,firefox,chrome[这三款浏览器经过测试]等浏览器

酷(又修复了个不大不小的bug,现在是2.1)

		
		window.onload=function(){
			/****************************
			 * 作者:q821424508@sina.com	*
			 * 时间:2012-08-20			*
			 * version:2.1				*
			 * 							*
			 ****************************/
			document.getElementsByTagName("body")[0].onkeydown =function(){
				
				//获取事件对象
				var elem = event.relatedTarget || event.srcElement || event.target ||event.currentTarget; 
				
				if(event.keyCode==8){//判断按键为backSpace键
				
						//获取按键按下时光标做指向的element
						var elem = event.srcElement || event.currentTarget; 
						
						//判断是否需要阻止按下键盘的事件默认传递
						var name = elem.nodeName;
						
						if(name!='INPUT' && name!='TEXTAREA'){
							return _stopIt(event);
						}
						var type_e = elem.type.toUpperCase();
						if(name=='INPUT' && (type_e!='TEXT' && type_e!='TEXTAREA' && type_e!='PASSWORD' && type_e!='FILE')){
								return _stopIt(event);
						}
						if(name=='INPUT' && (elem.readOnly==true || elem.disabled ==true)){
								return _stopIt(event);
						}
					}
				}
			}
		function _stopIt(e){
				if(e.returnValue){
					e.returnValue = false ;
				}
				if(e.preventDefault ){
					e.preventDefault();
				}				

				return false;
		}

欢迎拍砖。

欢迎在自己的项目中使用,复制,传播,都可以,不过请注明出处。

-------------------------------------------------------------------------------------------------------------------------

版本升级:

当前版本 2.1

修复firefox下无法删除input里面字符的bug

说明:

不知道为毛,在firefox下出现问题了,之前确定测试过,然后有一个童鞋说这个脚本在firefox下不能用,会出现上面所说现象,我说我调试下,但是后来他说又可以了,

不过经过我的测试这段脚本确实有问题,

确实会出现上述问题,不过是时有时无。

算了还是改一下吧,

出现问题的原因:

firefox下var elem = event.relatedTarget || event.srcElement 无法获取到目标对象。

所以换成target属性来获取。

ok 欢迎继续使用

有问题 请提出来 我来修复。


目录
相关文章
|
前端开发 JavaScript
js + ajax实现商品列表页到详情页的跳转
js + ajax实现商品列表页到详情页的跳转
|
前端开发 JavaScript
前端知识(十)———JavaScript 使用URL跳转传递数组对象数据类型的方法
前端知识(十)———JavaScript 使用URL跳转传递数组对象数据类型的方法
804 0
|
JavaScript 前端开发
(javascript)Vue启动时常见错误及其解决办法
(javascript)Vue启动时常见错误及其解决办法
468 0
|
11月前
|
JavaScript 前端开发
js小数运算出现的问题(精度丢失)及解决办法-亲测有效
JavaScript浮点数运算存在精度丢失问题,如0.1+0.2不等于0.3。原因是十进制小数转二进制时可能出现无限循环,导致舍入误差。本文提供一种精度处理方法,通过将小数转为整数运算后再还原,实现加减乘除的精确计算,解决常见浮点运算误差问题。
1443 0
|
JavaScript 前端开发 安全
JavaScript实现跳转的方法
JavaScript实现跳转的方法
260 1
|
JavaScript 前端开发
JavaScript 地址信息与页面跳转及跳转传参
JavaScript 地址信息与页面跳转及跳转传参
384 1
|
网络架构
若依修改 :id 不跳转注释的资料,路由配置:id不跳转修改,若依的store的permission.js对动态路由有控制
若依修改 :id 不跳转注释的资料,路由配置:id不跳转修改,若依的store的permission.js对动态路由有控制
若依修改 :id 不跳转注释的资料,路由配置:id不跳转修改,若依的store的permission.js对动态路由有控制
|
JavaScript
Vue3基础(21)___在axios.js中使用路由跳转
本文介绍了在Vue 3中如何在axios.js中使用路由跳转,通过直接引入路由实例并使用`router.push`实现页面跳转。
726 0
|
JavaScript 前端开发 安全
JavaScript实现跳转的方法
JavaScript实现跳转的方法
|
JavaScript
JS 判断域名并跳转到指定页面
JS 判断域名并跳转到指定页面
390 0