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编写2048小游戏
Jul 07 Javascript
JS实现横向拉伸动感伸缩菜单效果代码
Sep 04 Javascript
jQuery如何使用自动触发事件trigger
Nov 29 Javascript
JavaScript实现图片轮播组件代码示例
Nov 22 Javascript
vue cli构建的项目中请求代理与项目打包问题
Feb 26 Javascript
关于JavaScript中高阶函数的魅力详解
Sep 07 Javascript
vue组件中的样式属性scoped实例详解
Oct 30 Javascript
JavaScript实现新年倒计时效果
Nov 17 Javascript
Vue.js如何使用Socket.IO的示例代码
Sep 05 Javascript
uploadify插件实现多个图片上传并预览
Sep 30 Javascript
微信小程序一周时间表功能实现
Oct 17 Javascript
Javascript异步执行不按顺序解决方案
Apr 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
10个可以简化php开发过程的MySQL工具
2010/04/11 PHP
php递归使用示例(php递归函数)
2014/02/14 PHP
教你如何在CI框架中使用 .htaccess 隐藏url中index.php
2014/06/09 PHP
php获取访问者IP地址汇总
2015/04/24 PHP
PHP简单实现记录网站访问量功能示例
2018/06/06 PHP
js 小数取整的函数
2010/05/10 Javascript
javascript如何动态加载表格与动态添加表格行
2013/11/27 Javascript
JS的document.all函数使用示例
2013/12/30 Javascript
javascript实现信息增删改查的方法
2015/07/25 Javascript
JavaScript学习笔记之DOM基础 2.4
2015/08/14 Javascript
js+css实现有立体感的按钮式文字竖排菜单效果
2015/09/01 Javascript
学习JavaScript设计模式(策略模式)
2015/11/26 Javascript
react.js CMS 删除功能的实现方法
2017/04/17 Javascript
微信小程序实现滑动删除效果
2017/05/19 Javascript
详解webpack多页面配置记录
2018/01/22 Javascript
详解各版本React路由的跳转的方法
2018/05/10 Javascript
element-ui 中使用upload多文件上传只请求一次接口
2019/07/19 Javascript
vscode 使用Prettier插件格式化配置使用代码详解
2020/08/10 Javascript
python 数据加密代码
2008/12/24 Python
跟老齐学Python之私有函数和专有方法
2014/10/24 Python
python字符串的常用操作方法小结
2016/05/21 Python
基于OpenCV python3实现证件照换背景的方法
2019/03/22 Python
基于python实现雪花算法过程详解
2019/11/16 Python
Python 获取命令行参数内容及参数个数的实例
2019/12/20 Python
python 中的paramiko模块简介及安装过程
2020/02/29 Python
python实现QQ邮箱发送邮件
2020/03/06 Python
Python读取VOC中的xml目标框实例
2020/03/10 Python
Python unittest单元测试框架及断言方法
2020/04/15 Python
Python使用tkinter实现摇骰子小游戏功能的代码
2020/07/02 Python
Keras实现DenseNet结构操作
2020/07/06 Python
Android面试题及答案
2015/09/04 面试题
2014班子“三严三实”对照检查材料思想汇报
2014/09/18 职场文书
个人作风建设心得体会
2014/10/22 职场文书
医务人员医德医风心得体会
2016/01/25 职场文书
一劳永逸彻底解决pip install慢的办法
2021/05/24 Python
Java实现注册登录跳转
2022/06/16 Java/Android