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 相关文章推荐
js setTimeout 常见问题小结
Aug 13 Javascript
JS 删除字符串最后一个字符的实现代码
Feb 20 Javascript
jquery实现左右无缝轮播图
Jul 31 Javascript
原生ajax处理json格式数据的实例代码
Dec 25 Javascript
React Native中TabBarIOS的简单使用方法示例
Oct 13 Javascript
Angular 向组件传递模板的两种方法
Feb 23 Javascript
Vue-component全局注册实例
Sep 06 Javascript
10种JavaScript最常见的错误(小结)
Jun 21 Javascript
小程序如何自主实现拦截器的示例代码
Nov 04 Javascript
node.js中事件触发器events的使用方法实例分析
Nov 23 Javascript
vue+vuex+axios从后台获取数据存入vuex,组件之间共享数据操作
Jul 31 Javascript
vue实现动态给id赋值,点击事件获取当前点击的元素的id操作
Nov 09 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
Laravel中使用阿里云OSS Composer包分享
2015/02/10 PHP
CodeIgniter基于Email类发邮件的方法
2016/03/29 PHP
JavaScript弹簧振子超简洁版 完全符合能量守恒,胡克定理
2009/10/25 Javascript
JSON 教程 json入门学习笔记
2020/09/22 Javascript
json的定义、标准格式及json字符串检验
2014/05/11 Javascript
jquery实现在页面加载的时自动为日期插件添加当前日期
2014/08/20 Javascript
Node.js与Sails ~项目结构与Mvc实现及日志机制
2015/10/14 Javascript
WEB前端开发都应知道的jquery小技巧及jquery三个简写
2015/11/15 Javascript
JavaScript+CSS无限极分类效果完整实现方法
2015/12/22 Javascript
用js控件div的滚动条,让它在内容更新时自动滚到底部的实现方法
2016/10/27 Javascript
将JSON字符串转换成Map对象的方法
2016/11/30 Javascript
JavaScript中三种常见的排序方法
2017/02/24 Javascript
JS中把函数作为另一函数的参数传递方法(总结)
2017/06/28 Javascript
Angular 4根据组件名称动态创建出组件的方法教程
2017/11/01 Javascript
JS中间件设计模式的深入探讨与实例分析
2020/04/11 Javascript
[54:28]EG vs OG 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/18 DOTA
python私有属性和方法实例分析
2015/01/15 Python
python实现定时提取实时日志程序
2018/06/22 Python
Python面向对象之接口、抽象类与多态详解
2018/08/27 Python
Python sklearn KFold 生成交叉验证数据集的方法
2018/12/11 Python
python添加菜单图文讲解
2019/06/04 Python
python爬虫 urllib模块url编码处理详解
2019/08/20 Python
pytorch 模型的train模式与eval模式实例
2020/02/20 Python
深度学习入门之Pytorch 数据增强的实现
2020/02/26 Python
使用python实现名片管理系统
2020/06/18 Python
python 输入字符串生成所有有效的IP地址(LeetCode 93号题)
2020/10/15 Python
Ryderwear美国官网:澳大利亚高端健身训练装备品牌
2018/04/24 全球购物
牵手50新加坡:专为黄金岁月的单身人士而设的交友网站
2020/08/16 全球购物
如何在发生故障的节点上重新安装 SQL Server
2013/03/14 面试题
电子信息毕业生自荐信
2013/11/16 职场文书
党的群众教育实践活动实施方案
2014/06/12 职场文书
公司表扬稿范文
2015/05/05 职场文书
2016春季小学开学寄语
2015/12/03 职场文书
你需要掌握的20个Python常用技巧
2022/02/28 Python
分享几个简单MySQL优化小妙招
2022/03/31 MySQL
Vue2项目中对百度地图的封装使用详解
2022/06/16 Vue.js