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中各种编码解码函数的区别和注意事项
Aug 19 Javascript
谷歌地图打不开的解决办法
Aug 07 Javascript
JavaScript中的style.cssText使用教程
Nov 06 Javascript
jQuery中height()方法用法实例
Dec 24 Javascript
jQuery插件Tmpl的简单使用方法
Apr 27 Javascript
JavaScript 深层克隆对象详解及实例
Nov 03 Javascript
浅谈jQuery的bind和unbind事件(绑定和解绑事件)
Mar 02 Javascript
Node中使用ES6语法的基础教程
Jan 05 Javascript
tween.js缓动补间动画算法示例
Feb 13 Javascript
js使用formData实现批量上传
Mar 27 Javascript
Node.js 进程平滑离场剖析小结
Jan 24 Javascript
javascript实现的时间格式加8小时功能示例
Jun 13 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之第七天
2006/10/09 PHP
php实现mysql备份恢复分卷处理的方法
2014/12/26 PHP
php采集内容中带有图片地址的远程图片并保存的方法
2015/01/03 PHP
对jQuery的事件绑定的一些思考(补充)
2013/04/20 Javascript
js实现飞入星星特效代码
2014/10/17 Javascript
Bootstrap组件(一)之菜单
2016/05/11 Javascript
深入剖析javascript中的exec与match方法
2016/05/18 Javascript
深入理解JavaScript中的call、apply、bind方法的区别
2016/05/30 Javascript
详谈JS中实现种子随机数及作用
2016/07/19 Javascript
详解js的六大数据类型
2016/12/27 Javascript
详解React中的组件通信问题
2017/07/31 Javascript
详解nodejs中express搭建权限管理系统
2017/09/15 NodeJs
Three.js实现浏览器变动时进行自适应的方法
2017/09/26 Javascript
Rollup处理并打包JS文件项目实例代码
2018/05/31 Javascript
layer.open 按钮的点击事件关闭方法
2018/08/17 Javascript
微信小程序开发问题之wx.previewImage
2018/12/25 Javascript
微信小程序实现多选删除列表数据功能示例
2019/01/15 Javascript
8 个有用的JS技巧(推荐)
2019/07/03 Javascript
vue实现编辑器键盘抬起时内容跟随光标距顶位置向上滚动效果
2020/05/28 Javascript
vue 避免变量赋值后双向绑定的操作
2020/11/07 Javascript
python使用PyV8执行javascript代码示例分享
2013/12/04 Python
Python文件读取的3种方法及路径转义
2015/06/21 Python
Windows下为Python安装Matplotlib模块
2015/11/06 Python
Python爬虫包 BeautifulSoup  递归抓取实例详解
2017/01/28 Python
Python实现基于SVM的分类器的方法
2019/07/19 Python
Python多个装饰器的调用顺序实例解析
2020/05/22 Python
Python3+Appium安装及Appium模拟微信登录方法详解
2021/02/16 Python
澳大利亚领先的女性运动服品牌:Lorna Jane
2020/06/19 全球购物
后勤自我鉴定
2013/10/13 职场文书
信息技术专业个人自我评价
2013/12/11 职场文书
法制宣传月活动总结
2014/04/29 职场文书
财务会计专业求职信
2014/06/09 职场文书
2014年公司工作总结
2014/11/22 职场文书
简爱电影观后感
2015/06/10 职场文书
2015大学党建带团建工作总结
2015/07/23 职场文书
Windows Server 2012 修改远程默认端口3389的方法
2022/04/28 Servers