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 相关文章推荐
JObj预览一个JS的框架
Mar 13 Javascript
理解Javascript_07_理解instanceof实现原理
Oct 15 Javascript
编写可维护面向对象的JavaScript代码[翻译]
Feb 12 Javascript
js批量设置样式的三种方法不推荐使用with
Feb 25 Javascript
js兼容火狐显示上传图片预览效果的方法
May 21 Javascript
jQuery实现可高亮显示的二级CSS菜单效果
Sep 01 Javascript
jQuery 的 ready()的纯js替代方法
Nov 20 Javascript
JS实现复制内容到剪贴板功能
Feb 05 Javascript
JavaScript实现星星等级评价功能
Mar 22 Javascript
详解VueJs前后端分离跨域问题
May 24 Javascript
vue.js的双向数据绑定Object.defineProperty方法的神奇之处
Jan 18 Javascript
js将URL网址转为16进制加密与解密函数
Mar 04 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
PHP4实际应用经验篇(6)
2006/10/09 PHP
php删除页面记录 同时刷新页面 删除条件用GET方式获得
2012/01/10 PHP
php 阴历-农历-转换类代码
2012/01/16 PHP
PHP5.3连接Oracle客户端及PDO_OCI模块的安装方法
2016/05/13 PHP
php通过文件头判断格式的方法
2016/05/28 PHP
老生常谈PHP面向对象之解释器模式
2017/05/17 PHP
laravel自定义分页效果
2017/07/23 PHP
php 可变函数使用小结
2018/06/12 PHP
Google的跟踪代码 动态加载js代码方法应用
2012/11/12 Javascript
基于SVG的web页面图形绘制API介绍及编程演示
2013/06/28 Javascript
js使用eval解析json实例与注意事项分享
2014/01/18 Javascript
jquery 操作css样式、位置、尺寸方法汇总
2014/11/28 Javascript
javascript实时获取鼠标坐标值并显示的方法
2015/04/30 Javascript
javascript文件加载管理简单实现方法
2015/07/25 Javascript
javascript中对变量类型的判断方法
2015/08/09 Javascript
跟我学习javascript的隐式强制转换
2015/11/16 Javascript
实例详解JSON数据格式及json格式数据域字符串相互转换
2016/01/07 Javascript
JS使用setInterval实现的简单计时器功能示例
2018/04/19 Javascript
详解Puppeteer 入门教程
2018/05/09 Javascript
vue滑动吸顶及锚点定位的示例代码
2020/05/10 Javascript
[28:05]完美世界DOTA2联赛循环赛Inki vs DeMonsTer 第一场 10月30日
2020/10/31 DOTA
python matplotlib 注释文本箭头简单代码示例
2018/01/08 Python
基于Python执行dos命令并获取输出的结果
2019/12/30 Python
如何在python中执行另一个py文件
2020/04/30 Python
Desigual英国官网:在线购买原创服装
2018/03/09 全球购物
网络通讯中,端口有什么含义,端口的取值范围
2012/11/23 面试题
飘柔洗发水广告词
2014/03/14 职场文书
男女朋友协议书
2014/04/23 职场文书
湖南省党的群众路线教育实践活动总结会议新闻稿
2014/10/21 职场文书
夫妻分居协议书范文
2014/11/26 职场文书
工作犯错保证书
2015/05/11 职场文书
读《教育心理学》心得体会
2016/01/22 职场文书
python实现求纯色彩图像的边框
2021/04/08 Python
详解CSS故障艺术
2021/05/25 HTML / CSS
Python selenium模拟网页点击爬虫交管12123违章数据
2021/05/26 Python
zabbix 代理服务器的部署与 zabbix-snmp 监控问题
2022/07/15 Servers