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 相关文章推荐
JavaScript是否可实现多线程  深入理解JavaScript定时机制
Dec 22 Javascript
javascript框架设计之浏览器的嗅探和特征侦测
Jun 23 Javascript
第六篇Bootstrap表格样式介绍
Jun 21 Javascript
Bootstrap学习系列之使用 Bootstrap Typeahead 组件实现百度下拉效果
Jul 07 Javascript
微信小程序 MINA文件结构
Oct 17 Javascript
教你用十行node.js代码读取docx的文本
Mar 08 Javascript
vue-resource调用promise取数据方式详解
Jul 21 Javascript
解决Angular2 router.navigate刷新页面的问题
Aug 31 Javascript
详解使用angular框架离线你的应用(pwa指南)
Jan 31 Javascript
js实现自定义右键菜单
May 18 Javascript
JS绘图Flot应用图形绘制异常解决方案
Oct 16 Javascript
vue 通过 Prop 向子组件传递数据的实现方法
Oct 30 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
php对二维数组按指定键值key排序示例代码
2013/11/26 PHP
输入自动提示搜索提示功能的javascript:sugggestion.js
2013/09/02 Javascript
JavaScript中“过于”犀利地for/in循环使用示例
2013/10/22 Javascript
JS实现在线统计一个页面内鼠标点击次数的方法
2015/02/28 Javascript
js正则匹配出所有图片及图片地址src的方法
2015/06/08 Javascript
JavaScript中var关键字的使用详解
2015/08/14 Javascript
JS排序方法(sort,bubble,select,insert)代码汇总
2016/01/30 Javascript
浅谈javascript的闭包
2017/01/23 Javascript
nodejs后台集成ueditor富文本编辑器的实例
2017/07/11 NodeJs
js实现登录注册框手机号和验证码校验(前端部分)
2017/09/28 Javascript
浅谈Vue的加载顺序探讨
2017/10/25 Javascript
详解Vue SSR( Vue2 + Koa2 + Webpack4)配置指南
2018/11/13 Javascript
laydate只显示时分 不显示秒的功能实现方法
2019/09/28 Javascript
[44:04]OG vs Mineski 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
Python获取当前时间的方法
2014/01/14 Python
Python的Flask框架中实现分页功能的教程
2015/04/20 Python
详解Python中break语句的用法
2015/05/14 Python
Python中如何获取类属性的列表
2016/12/26 Python
100行python代码实现跳一跳辅助程序
2018/01/15 Python
详解Python发送email的三种方式
2018/10/18 Python
python 提取tuple类型值中json格式的key值方法
2018/12/31 Python
python感知机实现代码
2019/01/18 Python
python如何将图片转换素描画
2020/09/08 Python
Docker如何部署Python项目的实现详解
2020/10/26 Python
加拿大领先的牛仔零售商:Bluenotes
2018/01/22 全球购物
VC++笔试题
2014/10/13 面试题
施工员岗位职责
2014/03/16 职场文书
公司募捐倡议书
2014/05/14 职场文书
出国留学担保书
2014/05/20 职场文书
考试诚信承诺书
2014/05/23 职场文书
软环境建设心得体会
2014/09/09 职场文书
2014年施工员工作总结
2014/11/18 职场文书
公司员工体检通知
2015/04/21 职场文书
圆明园观后感
2015/06/03 职场文书
Java并发编程必备之Future机制
2021/06/30 Java/Android
Windows server 2012 配置Telnet以及用法详解
2022/04/28 Servers