javascrpt总结常见的window.location问题

 

 

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>

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值