1,window.location.replace和window.location.href区别
location.replace(newURL),replace() 方法可用一个新文档取代当前文档。
有3个页面 a,b,c
如果当前页面是c页面,并且c页面是这样跳转过来的:a->b->c
1:b->c 是通过window.location.replace("..xx/c") 此时b页面的url会被c页面代替,并且点击后退按钮时会回退到a页面(最开始的页面)
2:b->c是通过window.location.href("..xx/c") 此时b页面的路径会被c页面代替,但是点击回按钮后页面回退的是b页面
两者的区别: 两者后退时所回退的页面不一样
2,返回上一页并刷新与返回不刷新代码
返回并刷新
<script>alert("恭喜您,操作成功!"); window.location.href=document.referrer; </script>
返回不刷新
<script>alert("恭喜您,操作成功!"); window.history.back(-1); </script>
history.back(-1);的作用是:直接返回当前页面的前一个页面,并且刷新该页面。于是我换成history.go(-1)。
history.go(-1)的作用是:直接返回当前页面的前一个页面,但是不刷新该页面,即表单的内容依旧保持。测试发现,文本框中的内容回显了,但是下拉框的内容还是不显示,于是想了另一个办法,如下:
在点击返回之前,定义一个flag=1并放到session中传下去,在前一个页面执行Init()方法时判断如果flag不为1则进行刷新,如果为1就不刷新。测试看效果,发现不仅本来的下拉框没有显示,居然连其他需要回显的内容也不见了,,,无奈啊,只能采用终极办法:
和业务沟通下,将点击详情显示新页面改成显示一个弹窗,这样在弹窗中的操作不会影响前要页面的显示。
3,运用Js 禁用浏览器后退返回
一些界面,都是用户手动点击退出按钮的。但是为了避免,用户误操作 点击浏览器后退,或者用鼠标手势后退什么的。容易出现误操作。
所以在有些页面上,适当的禁用浏览器的后退,是可以提高很大的用户体验。
在网上查,可以查到很多js禁用后退的材料。
常见的处理方法主要有以下几种:
1,这种方式,不算是一个满意的解决方式。因为用户能体验到,界面的后退,前进。体验不好。 即敲击删除按钮或鼠标点击后退按键,页面会刷新,但依然停留在当前页面。
<script language="JavaScript">
javascript:window.history.forward(1);
</script>
2,禁用键盘的backspace键
这种做法,没有办法消除鼠标的误操作,即鼠标点击后退按钮依然可以回退。
<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.οnkeypress=banBackSpace;
//禁止后退键 作用于IE、Chrome
document.οnkeydοwn=banBackSpace;
</script>
3,也是查找了好多资料才找到的,这种方式,可以消除 后退的所有动作。包括 键盘、鼠标手势等产生的后退动作。
<script language="javascript">
//防止页面后退
history.pushState(null, null, document.URL);
window.addEventListener('popstate', function () {
history.pushState(null, null, document.URL);
});
</script>