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 核心参考教程 内置对象
Oct 13 Javascript
javascript getElementsByClassName实现代码
Oct 11 Javascript
编写自己的jQuery插件简单实现代码
Apr 19 Javascript
jQuery 自定义函数写法分享
Mar 30 Javascript
jQuery学习笔记(3)--用jquery(插件)实现多选项卡功能
Apr 08 Javascript
JSON遍历方式实例总结
Dec 07 Javascript
JavaScript图像延迟加载库Echo.js
Apr 05 Javascript
深入理解JavaScript中为什么string可以拥有方法
May 24 Javascript
JavaScript仿淘宝页面图片滚动加载及刷新回顶部的方法解析
May 24 Javascript
JavaScript继承与聚合实例详解
Jan 22 Javascript
Javascript幻灯片播放功能实现过程解析
May 07 Javascript
js实现炫酷光感效果
Sep 05 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
浅析Mysql 数据回滚错误的解决方法
2013/08/05 PHP
PHP Laravel中的Trait使用方法
2019/01/20 PHP
nicejforms——美化表单不用愁
2007/02/20 Javascript
javascript iframe中打开文件,并检测iframe存在否
2008/12/28 Javascript
jQuery Ajax之$.get()方法和$.post()方法
2009/10/12 Javascript
javascript 在网页中的运用(asp.net)
2009/11/23 Javascript
jQuery 表单验证扩展代码(二)
2010/10/20 Javascript
jQuery点击后一组图片左右滑动的实现代码
2012/08/16 Javascript
jquery动画3.创建一个带遮罩效果的图片走廊
2012/08/24 Javascript
5个书写JavaScript代码的坏习惯,看看你中枪了没?
2014/11/06 Javascript
JS实现文字向下滚动完整实例
2015/02/06 Javascript
JavaScript中指定函数名称的相关方法
2015/06/04 Javascript
jQuery实现点击行选中或取消CheckBox的方法
2016/08/01 Javascript
javascript事件的绑定基础实例讲解(34)
2017/02/14 Javascript
微信小程序 基础知识css样式media标签
2017/02/15 Javascript
Node.js 回调函数实例详解
2017/07/06 Javascript
Vue验证码60秒倒计时功能简单实例代码
2018/06/22 Javascript
vue.js父子组件通信动态绑定的实例
2018/09/28 Javascript
jQuery实现小火箭返回顶部特效
2020/02/03 jQuery
JavaScript中layim之整合右键菜单的示例代码
2021/02/06 Javascript
[02:29]完美世界高校联赛上海赛区回顾
2015/12/15 DOTA
python使用代理ip访问网站的实例
2018/05/07 Python
PyCharm代码回滚,恢复历史版本的解决方法
2018/10/22 Python
用Python制作音乐海报
2021/01/26 Python
html5 canvas 使用示例
2010/10/22 HTML / CSS
意大利团购网站:Groupon意大利
2016/10/11 全球购物
路德维希•贝克(LUDWIG BECK)中文官网:德国大型美妆百货
2020/09/19 全球购物
Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别?用contains来区分是否有重复的对象。还是都不用
2013/07/30 面试题
利用异或运算实现两个无符号数的加法运算
2013/12/20 面试题
编辑个人求职信范文
2013/09/21 职场文书
学生个人的自我评价分享
2013/11/05 职场文书
公司成立感言
2014/01/11 职场文书
2014年保洁员工作总结
2014/11/19 职场文书
优秀员工推荐材料
2014/12/20 职场文书
2015年安全生产月工作总结
2015/07/27 职场文书
HTML中的表单Form实现居中效果
2021/05/25 HTML / CSS