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读取ASP设定的COOKIE
Nov 24 Javascript
用JavaScript仿PS里的羽化效果代码
Dec 20 Javascript
js清空表单数据的两种方式(遍历+reset)
Jul 18 Javascript
jQuery通过扩展实现抖动效果的方法
Mar 11 Javascript
将List对象列表转换成JSON格式的类实现方法
Jul 04 Javascript
Vue.js双向绑定实现原理详解
Dec 22 Javascript
微信小程序实战之上拉(分页加载)效果(2)
Apr 17 Javascript
微信小程序利用co处理异步流程的方法教程
May 20 Javascript
浅析微信小程序modal弹窗关闭默认会执行cancel问题
Oct 14 Javascript
vue 解决异步数据更新问题
Oct 29 Javascript
js实现表单项的全选、反选及删除操作示例
Jun 05 Javascript
LayUI+Shiro实现动态菜单并记住菜单收展的示例
May 06 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
一个从别的网站抓取信息的例子(域名查询)
2006/10/09 PHP
PHP 常见郁闷问题答解
2006/11/25 PHP
php设计模式 Visitor 访问者模式
2011/06/28 PHP
完美解决PHP中的Cannot modify header information 问题
2013/08/12 PHP
php使用gearman进行任务分发操作实例详解
2020/02/26 PHP
Ctrl+Enter提交内容信息
2006/06/26 Javascript
XHTML-Strict 内允许出现的标签
2006/12/11 Javascript
基于jQuery通过jQuery.form.js插件使用ajax提交form表单
2015/08/17 Javascript
JS中的数组方法笔记整理
2016/07/26 Javascript
angularjs中ng-attr的用法详解
2016/12/31 Javascript
JS点击缩略图整屏居中放大图片效果
2017/07/04 Javascript
微信小程序之选项卡的实现方法
2017/09/29 Javascript
微信小程序实现图片预览功能
2018/01/31 Javascript
深入理解JS的事件绑定、事件流模型
2018/05/13 Javascript
Array数组对象中的forEach、map、filter及reduce详析
2018/08/02 Javascript
使用JS实现导航切换时高亮显示的示例讲解
2018/08/22 Javascript
vue template中slot-scope/scope的使用方法
2018/09/06 Javascript
vue3.0 CLI - 1 - npm 安装与初始化的入门教程
2018/09/14 Javascript
vue的keep-alive中使用EventBus的方法
2019/04/23 Javascript
vue使用vuex实现首页导航切换不同路由的方法
2019/05/08 Javascript
VUE:vuex 用户登录信息的数据写入与获取方式
2019/11/11 Javascript
JS实现移动端双指缩放和旋转方法
2019/12/13 Javascript
[06:53]2018DOTA2国际邀请赛寻真——勇于创新的Vici Gaming
2018/08/14 DOTA
Python使用正则匹配实现抓图代码分享
2015/04/02 Python
python字符串的常用操作方法小结
2016/05/21 Python
python中模块查找的原理与方法详解
2017/08/11 Python
使用Python-OpenCV向图片添加噪声的实现(高斯噪声、椒盐噪声)
2019/05/28 Python
Python当中的array数组对象实例详解
2019/06/12 Python
Python实现二叉搜索树BST的方法示例
2019/07/30 Python
Django中reverse反转并且传递参数的方法
2019/08/06 Python
win7上tensorflow2.2.0安装成功 引用DLL load failed时找不到指定模块 tensorflow has no attribute xxx 解决方法
2020/05/20 Python
基于keras中的回调函数用法说明
2020/06/17 Python
高中军训感言800字
2014/03/05 职场文书
老公给老婆的保证书
2014/04/28 职场文书
从QQtabBar看css命名规范BEM的详细介绍
2021/08/07 HTML / CSS
Android Flutter实现3D动画效果示例详解
2022/04/07 Java/Android