javascript怎么禁用浏览器后退按钮


Posted in Javascript onMarch 27, 2014

1、

<script language="JavaScript"> 
javascript:window.history.forward(1); 
</script>

利用JS产生一个“前进”的动作,以抵消后退功能,这种方法应该是最简洁的,并且不需要考虑用户连点两次或多次“后退”的情况,缺点是当用户端禁用了JavaScript之后即失效。

2、

<A HREF="logout.do" onclick="javascript:location.replace(this.href); event.returnValue=false; "> 
Logout (Back Disabled) 
</A>

用location.replace从一个页面转到另一个页面。这种方法的原理是,用新页面的URL替换当前的历史纪录,这样浏览历史记录中就只有一个页面,后退按钮永远不会变为可用。我想这可能正是许多人所寻求的方法,但这种方法仍旧不是任何情况下的最好方法。这种方法的缺点在于:简单地运用Response.Redirect将不再有效,这是因为每次用户从一个页面转到另一个页面,我们都必须用客户端代码清除location.history。另外还要注意,这种方法清除的是最后一个访问历史记录,而不是全部的访问记录。

3、

当键盘敲下后退键(Backspace)后
1、禁止浏览器自动后退
2、但不影响密码、单行文本、多行文本输入框等的回退操作

<script type="text/javascript"> //处理键盘事件 禁止后退键(Backspace)密码或单行、多行文本框除外 
function banBackSpace(e){ 
var ev = e || window.event;//获取event对象 
var obj = ev.target || ev.srcElement;//获取事件源 
var t = obj.type || obj.getAttribute('type');//获取事件源类型 
//获取作为判断条件的事件类型 
var vReadOnly = obj.getAttribute('readonly'); 
var vEnabled = obj.getAttribute('enabled'); 
//处理null值情况 
vReadOnly = (vReadOnly == null) ? false : vReadOnly; 
vEnabled = (vEnabled == null) ? true : vEnabled; 
//当敲Backspace键时,事件源类型为密码或单行、多行文本的, 
//并且readonly属性为true或enabled属性为false的,则退格键失效 
var flag1=(ev.keyCode == 8 && (t=="password" || t=="text" || t=="textarea") 
&& (vReadOnly==true || vEnabled!=true))?true:false; 
//当敲Backspace键时,事件源类型非密码或单行、多行文本的,则退格键失效 
var flag2=(ev.keyCode == 8 && t != "password" && t != "text" && t != "textarea") 
?true:false; 
//判断 
if(flag2){ 
return false; 
} 
if(flag1){ 
return false; 
} 
} 
//禁止后退键 作用于Firefox、Opera 
document.onkeypress=banBackSpace; 
//禁止后退键 作用于IE、Chrome 
document.onkeydown=banBackSpace; 
</script>

以上方法都是针对“后退”按钮作出的反应,客户端浏览器需要打开JavaScript代码。

4、禁止缓存

<% response.setHeader("Cache-Control", "no-cache"); 
response.setHeader("Cache-Control", "no-store"); 
response.setDateHeader("Expires", 0); 
response.setHeader("Pragma", "no-cache"); 
%>

这种方法使用服务器端脚本,强制浏览器重新访问服务器下载页面,而不从缓存读取,结合struts jsp页面中的<logic>标签实现重新定向。

以上各种方法都有一定的局限

5、

<script language="JavaScript"> function logout(){ 
window.close(true); 
window.open("logout.do"); 
} 
</script> 
<button onClick="logout()">Logout</button>

这种方法比较偷懒,关掉浏览器再重新开,经过我的测试在视觉上几乎感觉不出来延时,同时又保证了后退按钮不可用(新窗口浏览器后退按钮为灰色),看起来似乎是个好方法,但缺点也比较明显:

首先,关闭和重开的浏览器窗口大小可能不同,用户可以明显看出这一过程,并且在一定程度上影响操作。

其次,同上,这是一个JavaScript方法。

Javascript 相关文章推荐
Firefox window.close()的使用注意事项
Apr 11 Javascript
js自动生成对象的属性示例代码
Oct 28 Javascript
一个简单的jQuery计算器实现了连续计算功能
Jul 21 Javascript
jQuery中size()方法用法实例
Dec 27 Javascript
JS中Location使用详解
May 12 Javascript
javascript实现网页字符定位的方法
Jul 14 Javascript
Angular 4环境准备与Angular cli创建项目详解
May 27 Javascript
用ES6写全屏滚动插件的示例代码
May 02 Javascript
npm全局模块卸载及默认安装目录修改方法
May 15 Javascript
chosen实现省市区三级联动
Aug 16 Javascript
详解基于React.js和Node.js的SSR实现方案
Mar 21 Javascript
基于JS实现操作成功之后自动跳转页面
Sep 25 Javascript
js弹出确认是否删除对话框
Mar 27 #Javascript
js或jquery实现页面打印可局部打印
Mar 27 #Javascript
window.location.href IE下跳转失效的解决方法
Mar 27 #Javascript
jquery无法设置checkbox选中即没有变成选中状态
Mar 27 #Javascript
JS字符串拼接在ie中都报错的解决方法
Mar 27 #Javascript
IE下双击checkbox反应延迟问题的解决方法
Mar 27 #Javascript
jquery实现的随机多彩tag标签随机颜色和字号大小效果
Mar 27 #Javascript
You might like
2020最新CPU的性能排名
2020/04/02 数码科技
PHP防注入安全代码
2008/04/09 PHP
PHP imagegrabscreen和imagegrabwindow(截取网站缩略图)的实例代码
2013/11/07 PHP
php使用百度翻译api示例分享
2014/01/31 PHP
PHP函数in_array()使用详解
2014/08/20 PHP
PHP实现视频文件上传完整实例
2014/08/28 PHP
Laravel-添加后台模板AdminLte的实现方法
2019/10/08 PHP
解决php用mysql方式连接数据库出现Deprecated报错问题
2019/12/25 PHP
javascript 一段左右两边随屏滚动的代码
2009/06/18 Javascript
JS 两日期相减,获得天数的小例子(兼容IE,FF)
2013/07/01 Javascript
在js文件中如何获取basePath处理js路径问题
2013/07/10 Javascript
原生js实现fadein 和 fadeout淡入淡出效果
2014/06/05 Javascript
JavaScript对象数组排序函数及六个用法
2015/12/23 Javascript
WordPress中鼠标悬停显示和隐藏评论及引用按钮的实现
2016/01/12 Javascript
在Node.js中使用Javascript Generators详解
2016/05/05 Javascript
js判断某个字符出现的次数的简单实例
2016/06/03 Javascript
EasyUI学习之Combobox级联下拉列表(2)
2016/12/29 Javascript
微信小程序组件 marquee实例详解
2017/06/23 Javascript
理解 Node.js 事件驱动机制的原理
2017/08/16 Javascript
vue实现商城购物车功能
2017/11/27 Javascript
JavaScript实现轮播图效果代码实例
2019/09/28 Javascript
[01:38]女王驾到——至宝魔廷新尊技能&特效展示
2020/06/16 DOTA
Python易忽视知识点小结
2015/05/25 Python
Python字符串处理实现单词反转
2017/06/14 Python
更换Django默认的模板引擎为jinja2的实现方法
2018/05/28 Python
Python将list中的string批量转化成int/float的方法
2018/06/26 Python
Laravel框架表单验证格式化输出的方法
2019/09/25 Python
Python TKinter如何自动关闭主窗口
2020/02/26 Python
基于Python爬虫采集天气网实时信息
2020/06/05 Python
完美解决python针对hdfs上传和下载的问题
2020/06/05 Python
Pytorch 高效使用GPU的操作
2020/06/27 Python
马德里运动鞋商店:Nigra Mercato
2020/02/16 全球购物
个人授权委托书
2014/04/03 职场文书
2014年班级工作总结
2014/11/14 职场文书
2015元旦标语横幅
2014/12/09 职场文书
欠款起诉书范文
2015/05/19 职场文书