javascript怎么禁用浏览器后退按钮
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怎么禁用浏览器后退按钮的更多相关文章
- ASP.NET实现IE下禁用浏览器后退按钮办法
		
在page_load方法里面增加如下代码: Response.Buffer = true; Response.ExpiresAbsolute = DateTime.Parse("2010-1 ...
 - 浏览器后退按钮导致jquery动态添加的select option值丢失的解决方法
		
监控浏览器返回功能 判断浏览器返回功能 禁用浏览器的后退按钮 JS禁止浏览器后退键 http://volunteer521.iteye.com/blog/830522/ 浏览器返回功能 判断上一页面来 ...
 - 利用js实现禁用浏览器后退
		
原博主链接为:http://blog.csdn.net/zc474235918/article/details/53138553 现在很多的内部系统,一些界面,都是用户手动点击退出按钮的.但是为了避免 ...
 - 利用js实现 禁用浏览器后退
		
现在很多的内部系统,一些界面,都是用户手动点击退出按钮的.但是为了避免,用户误操作 点击浏览器后退,或者用鼠标手势后退什么的.容易出现误操作. 所以在有些页面上,适当的禁用浏览器的后退, ...
 - 利用js实现 禁用浏览器后退 浏览器返回
		
现在很多的内部系统,一些界面,都是用户手动点击退出按钮的.但是为了避免,用户误操作 点击浏览器后退,或者用鼠标手势后退什么的.容易出现误操作. 所以在有些页面上,适当的禁用浏览器的后退, ...
 - [转] 利用js实现 禁用浏览器后退
		
[From] http://blog.csdn.net/zc474235918/article/details/53138553 现在很多的内部系统,一些界面,都是用户手动点击退出按钮的.但是为了避免 ...
 - 利用js实现 禁用浏览器后退|  去除上一个历史记录链接
		
也是查找了好多资料才找到的,这种方式,可以消除 后退的所有动作.包括 键盘.鼠标手势等产生的后退动作. <script language="javascript"> / ...
 - html和JavaScript,用户点击浏览器后退按钮,或者返回上一步自动刷新方式
		
浏览器用户返回上一步,自动刷新 方式一. <input type="hidden" id="refreshed" value="no" ...
 - js禁用浏览器后退
		
history.pushState(null, null, document.URL); window.addEventListener('popstate', function () { histo ...
 
随机推荐
- 一个执行Dos命令的窗口程序,与各位分享。
			
一个执行Dos命令的窗口程序,与各位分享. 效果图: 具体实现在代码中有详细的注释,请看代码. 实现执行CMD命令的核心代码(Cmd.cs): [csharp] using S ...
 - Vue路由scrollBehavior滚动行为控制锚点
			
使用前端路由,当切换到新路由时,想要页面滚到顶部,或者是保持原先的滚动位置,就像重新加载页面那样. vue-router 能做到,而且更好,它让你可以自定义路由切换时页面如何滚动. 注意: 这个功能只 ...
 - CSS 的优先级机制总结
			
一.样式优先级: 多重样式(Multiple Styles):如果外部样式.内部样式和内联样式同时应用于同一个元素,就是使用多重样式的情况. 一般情况下,大家都认为优先级是:内联样式 > 内部样 ...
 - IOS  Xib使用——为控制器添加Xib文件
			
Xib文件是一个轻量级的用来描述局部界面的文件,它与StoryBoard类似,都是使用Interface Bulider工具进行编辑.但是StoryBoard是重量级的,它是用来描述整个软件的多个界面 ...
 - 我所认识的PCA算法的princomp函数与经历 (基于matlab)
			
我接触princomp函数,主要是因为实验室的项目需要,所以我一接触的时候就希望快点学会怎么用. 项目中需要利用PCA算法对大量数据进行降维. 简介:主成分分析 ( Principal Compone ...
 - 如何解决SPD的缓存问题
			
SPD有时候文件被缓存住了,表现为文件的最后更改时间不对,或者本来文件已经被check in了,但是显示check out状态,而此时如果选择check in, 就会提示文件没有被check ou ...
 - 使用(function() {}).call(this);包裹代码有什么好处,什么时候应该这样做?
			
转自:http://segmentfault.com/q/1010000002519489 1.严格模式下函数调用的 this 并不会默认成为全局对象. 使用 func.call(this) 确保函数 ...
 - C++运行库 Neptune C++ Runtime Library(xbmc)
			
一个可以在多个平台C++开发环境下编译运行的C++运行库.其中包括了对多个C++库和平台SDK(HTTP/TCP/UDP/XML, Thread/Message, String, List/Stack ...
 - JavaScript简述一
			
一.什么时JavaScript JavaScript是一种具有面向对象能力的,解释型的设计语言,更具体一点,它是基于圣明和事件驱动并具有相对安全必的客户端脚本语言,因为它不需要在一个语言环境下运行,只 ...
 - STL之lambda表达式
			
一.简介 我们可以向一个算法传递任何类别的可调用对象.对于一个对象或一个表达式,如果可以对其使用调用运算符,则称它为可调用的.即,如果e是一个可调用的表达式,则我们可以编写代码e(args),其中ar ...