javascript禁用浏览器后退按钮

发布时间:2019-11-19编辑:脚本学堂
本文介绍了javascript禁用浏览器后退按钮的方法,禁止浏览器自动后退,有需要的朋友参考下。

1、 js禁用浏览器后退按钮
 

复制代码 代码示例:
<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方法。