zoukankan      html  css  js  c++  java
  • 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方法。

     

  • 相关阅读:
    修改 MyEclipse 中的 jsp 和 servlet 模板
    javaWeb 数据库连接池连接数据库
    发现一个类的方法不够用时,可以使用的3种方法可以增强
    使用 greenDao 框架 操作数据库
    Android之使用Volley框架在ListView中加载大量图片
    js日期选择控件
    mysql 乱码问题
    java 使用反射技术解耦
    javaWeb 使用jsp开发 html过滤标签
    javaWeb 使用jsp开发 foreach 标签
  • 原文地址:https://www.cnblogs.com/lgx5/p/8043084.html
Copyright © 2011-2022 走看看