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词法作用域与调用对象深入理解
Nov 29 Javascript
jQuery获取Select选择的Text和Value(详细汇总)
Jan 25 Javascript
js仿百度有啊通栏展示效果实现代码
May 28 Javascript
jQuery动画效果animate和scrollTop结合使用实例
Apr 02 Javascript
jquery显示隐藏元素的实现代码
May 19 Javascript
angular中使用Socket.io实例代码
Jun 03 Javascript
JS HTML图片显示Canvas 压缩功能
Jul 21 Javascript
angular基于ng-alain定义自己的select组件示例
Feb 23 Javascript
Angular4 ElementRef的应用
Feb 26 Javascript
web3.js增加eth.getRawTransactionByHash(txhash)方法步骤
Mar 15 Javascript
vue中子组件调用兄弟组件方法
Jul 06 Javascript
判断js数据类型的函数实例详解
May 23 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中 $$str 中 &quot;$$&quot; 的详解
2015/07/06 PHP
php微信高级接口调用方法(自定义菜单接口、客服接口、二维码)
2016/11/28 PHP
Thinkphp5框架实现图片、音频和视频文件的上传功能详解
2019/08/27 PHP
Laravel 集成微信用户登录和绑定的实现
2019/12/27 PHP
javascript 对象比较实现代码
2009/04/27 Javascript
jquery的ajax()函数传值中文乱码解决方法介绍
2012/11/08 Javascript
Get中文乱码IE浏览器Get中文乱码解决方案
2013/12/26 Javascript
jquery实现带二级菜单的导航示例
2014/04/28 Javascript
jquery checkbox 勾选的bug问题解决方案与分析
2014/11/13 Javascript
Nodejs如何复制文件
2016/03/09 NodeJs
Angularjs实现多个页面共享数据的方式
2016/03/29 Javascript
jquery siblings获取同辈元素用法实例分析
2016/07/25 Javascript
原生js仿jquery一些常用方法(必看篇)
2016/09/20 Javascript
深入理解js中的加载事件
2017/02/08 Javascript
如何理解jQuery中的ajaxSubmit方法
2017/03/13 Javascript
jQuery中可见性过滤器简单用法示例
2018/03/31 jQuery
使用react context 实现vue插槽slot功能
2019/07/18 Javascript
JS数组的常用10种方法详解
2020/05/08 Javascript
vue通过接口直接下载java生成好的Excel表格案例
2020/10/26 Javascript
python3简单实现微信爬虫
2015/04/09 Python
在Python中使用base64模块处理字符编码的教程
2015/04/28 Python
python爬取微信公众号文章的方法
2019/02/26 Python
Ubuntu18.04中Python2.7与Python3.6环境切换
2019/06/14 Python
基于Django ORM、一对一、一对多、多对多的全面讲解
2019/07/26 Python
Python实现字符串中某个字母的替代功能
2019/10/21 Python
Python+PyQt5实现灭霸响指功能
2020/05/25 Python
解决python调用自己文件函数/执行函数找不到包问题
2020/06/01 Python
Python Matplotlib简易教程(小白教程)
2020/07/28 Python
使用Python将xmind脑图转成excel用例的实现代码(一)
2020/10/12 Python
英文求职信结束语大全
2013/10/26 职场文书
护士自我介绍信
2014/01/13 职场文书
毕业生求职自荐信(2016最新版)
2016/01/28 职场文书
vue-cropper插件实现图片截取上传组件封装
2021/05/27 Vue.js
MySQL 发生同步延迟时Seconds_Behind_Master还为0的原因
2021/06/21 MySQL
Django+Celery实现定时任务的示例
2021/06/23 Python
TaiShan 200服务器安装Ubuntu 18.04的图文教程
2022/06/28 Servers