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 相关文章推荐
使用Plupload实现直接上传附件至七牛云存储
Dec 26 Javascript
Javascript实现汉字和拼音互转的终极方案
Oct 19 Javascript
值得分享的JavaScript实现图片轮播组件
Nov 21 Javascript
JavaScript 监控微信浏览器且自带返回按钮时间
Nov 27 Javascript
基于jquery实现的鼠标悬停提示案例
Dec 11 Javascript
Bootstrap表单制作代码
Mar 17 Javascript
你点的 ES6一些小技巧,请查收
Apr 25 Javascript
微信小程序实现折叠与展开文章功能
Jun 12 Javascript
JavaScript实现浅拷贝与深拷贝的方法分析
Jul 05 Javascript
JavaScript函数的特性与应用实践深入详解
Dec 30 Javascript
Vue实现表格批量审核功能实例代码
May 28 Javascript
JavaScript事件委托实现原理及优点进行
Aug 29 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
Discuz 6.0+ 批量注册用户名
2009/09/13 PHP
PHP时间和日期函数详解
2015/05/08 PHP
Linux环境下php实现给网站截图的方法
2016/05/03 PHP
漂亮的仿flash菜单,来自蓝色经典
2006/06/26 Javascript
延时重复执行函数 lLoopRun.js
2007/05/08 Javascript
JavaScript CSS修改学习第二章 样式
2010/02/19 Javascript
jQuery中Ajax的get、post等方法详解
2015/01/20 Javascript
jQuery scrollFix滚动定位插件
2015/04/01 Javascript
javascript中setTimeout使用指南
2015/07/26 Javascript
如何防止JavaScript自动插入分号
2015/11/05 Javascript
H5用户注册表单页 注册模态框!
2016/09/17 Javascript
5分钟打造简易高效的webpack常用配置
2017/07/04 Javascript
JS中关于正则的巧妙操作
2017/08/31 Javascript
在vue.js中使用JSZip实现在前端解压文件的方法
2018/09/05 Javascript
jQuery轮播图功能制作方法详解
2019/12/03 jQuery
微信小程序实现天气预报功能(附源码)
2020/12/10 Javascript
jquery实现鼠标悬浮弹出气泡提示框
2020/12/23 jQuery
python编写暴力破解FTP密码小工具
2014/11/19 Python
Python本地与全局命名空间用法实例
2015/06/16 Python
简介Python设计模式中的代理模式与模板方法模式编程
2016/02/02 Python
Python 中 Meta Classes详解
2016/02/13 Python
python实现隐马尔科夫模型HMM
2018/03/25 Python
Python爬虫实现抓取京东店铺信息及下载图片功能示例
2018/08/07 Python
浅析Python四种数据类型
2018/09/26 Python
python flask解析json数据不完整的解决方法
2019/05/26 Python
Django 创建新App及其常用命令的实现方法
2019/08/04 Python
使用OpCode绕过Python沙箱的方法详解
2019/09/03 Python
Python使用socket模块实现简单tcp通信
2020/08/18 Python
使用scrapy ImagesPipeline爬取图片资源的示例代码
2020/09/28 Python
Sublime Text3最新激活注册码分享适用2020最新版 亲测可用
2020/11/12 Python
friso美素佳儿官方海外旗舰店:荷兰原产原罐
2017/07/03 全球购物
初三班主任寄语大全
2014/04/04 职场文书
关于晚自习早退的检讨书
2014/09/13 职场文书
“四风”问题对照检查材料思想汇报
2014/09/16 职场文书
2015年企业团支部工作总结
2015/05/21 职场文书
关于Oracle12C默认用户名system密码不正确的解决方案
2021/10/16 Oracle