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 保存数组到Cookie的代码
Apr 14 Javascript
让你的博文自动带上缩址的实现代码,方便发到微博客上
Dec 28 Javascript
JavaScript性能优化之函数节流(throttle)与函数去抖(debounce)
Aug 11 Javascript
JavaScript计算值然后把值嵌入到html中的实现方法
Oct 29 Javascript
JavaScript实现省市县三级级联特效
May 16 Javascript
Express框架之connect-flash详解
May 31 Javascript
微信小程序 sha1 实现密码加密实例详解
Jul 06 Javascript
详解React中传入组件的props改变时更新组件的几种实现方法
Sep 13 Javascript
小程序视频或音频自定义可拖拽进度条的示例代码
Sep 30 Javascript
JS尾递归的实现方法及代码优化技巧
Jan 19 Javascript
详解vue更改头像功能实现
Apr 28 Javascript
JS JQuery获取data-*属性值方法解析
Sep 01 jQuery
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
关于手调机和数调机的选择
2021/03/02 无线电
php 面向对象的一个例子
2011/04/12 PHP
Ajax+PHP快速上手及简单应用说明
2013/07/24 PHP
Yii2实现跨mysql数据库关联查询排序功能代码
2017/02/10 PHP
Laravel框架学习笔记之批量更新数据功能
2019/05/30 PHP
PHP7创建销毁session的实例方法
2020/02/03 PHP
JS 无法通过W3C验证的处理方法
2010/03/09 Javascript
Jquery Autocomplete 结合asp.net使用要点
2010/10/29 Javascript
JavaScript中的6种运算符总结
2014/10/16 Javascript
深入理解JavaScript系列(37):设计模式之享元模式详解
2015/03/04 Javascript
jQuery实现带动画效果的二级下拉导航方法
2015/03/11 Javascript
Bootstrap实现圆角、圆形头像和响应式图片
2016/12/14 Javascript
基于JavaScript实现滑动门效果
2017/03/16 Javascript
jquery一键控制checkbox全选、反选或全不选
2017/10/16 jQuery
基于ionic实现下拉刷新功能
2018/05/10 Javascript
Vue 解决路由过渡动画抖动问题(实例详解)
2020/01/05 Javascript
vue-router懒加载的3种方式汇总
2021/02/28 Vue.js
Python简单计算文件夹大小的方法
2015/07/14 Python
将Python代码嵌入C++程序进行编写的实例
2015/07/31 Python
Python中pygame的mouse鼠标事件用法实例
2015/11/11 Python
在IPython中执行Python程序文件的示例
2018/11/01 Python
Python实现字符型图片验证码识别完整过程详解
2019/05/10 Python
pycharm编写spark程序,导入pyspark包的3中实现方法
2019/08/02 Python
在python shell中运行python文件的实现
2019/12/21 Python
pytorch::Dataloader中的迭代器和生成器应用详解
2020/01/03 Python
Python 解析库json及jsonpath pickle的实现
2020/08/17 Python
超级实用的8个Python列表技巧
2020/08/24 Python
英国著名的药妆网站:Escentual
2016/07/29 全球购物
Eclipse面试题
2014/03/22 面试题
考博专家推荐信模板
2013/12/02 职场文书
大学旷课检讨书
2014/01/28 职场文书
人事助理自荐信
2014/02/02 职场文书
教师竞聘上岗演讲稿
2014/09/03 职场文书
2016习总书记系列重要讲话心得体会
2016/01/15 职场文书
2016年全国助残日活动总结
2016/04/01 职场文书
Python实现猜拳与猜数字游戏的方法详解
2022/04/06 Python