论window.location.href = window.location.href刷新页面的问题
在JS中可以用window.location.href = window.location.href来刷新页面(当然还有很多其他的方法),
在使用这个方法刷新页面的时候回出现问题,如下:
1. <body onload='alert("aaa");'>
2. <script>function refresh()
3. {
4. window.location.href = window.location.href;
5. }
6. </script>
7.
8. <a href ='#'>###</a>
9. <input type ='button' value='button' onclick='refresh();' />
10. </body>
<body onload='alert("aaa");'>
<script>function refresh()
{
window.location.href = window.location.href;
}
</script>
<a href ='#'>###</a>
<input type ='button' value='button' onclick='refresh();' />
</body>
分析这段代码你会发现,当点击###后,再点击Button页面不会刷新。
想必看到这里你已经知道问题所在,就是在点击###后,Url上会加上一个#,
于是refresh()方法就变成了 window.location.href ="www.something.com/test.aspx#"
成为了一个锚点。
我的解决方法也很简单:
Java代码
1. window.location.href = window.location.href.replace(/#/g,'');
window.location.href = window.location.href.replace(/#/g,'');
替Url中的换所有#
一般来说这样替换不会有问题,url中一般不含有#,替换后也不会导致链接失效。
PS:虽然只是一个小问题,但开发时还是要注意。
window.location.reload(true)和reload(false)的使用简单比较
reload(true)是从服务端重新拿一下所有的页面组件,像image,css,js都得从拿,所以速度比较慢
reload(false)则是从本地缓存中拿页面组件,但是好像html自身不会缓存,所以一般用reload(false)就可以,具体是不是就不大清楚了
如果超出假设,可以考虑href,assign,replace等方法。
在JS中可以用window.location.href = window.location.href来刷新页面(当然还有很多其他的方法),
在使用这个方法刷新页面的时候回出现问题,如下:
1. <body onload='alert("aaa");'>
2. <script>function refresh()
3. {
4. window.location.href = window.location.href;
5. }
6. </script>
7.
8. <a href ='#'>###</a>
9. <input type ='button' value='button' onclick='refresh();' />
10. </body>
<body onload='alert("aaa");'>
<script>function refresh()
{
window.location.href = window.location.href;
}
</script>
<a href ='#'>###</a>
<input type ='button' value='button' onclick='refresh();' />
</body>
分析这段代码你会发现,当点击###后,再点击Button页面不会刷新。
想必看到这里你已经知道问题所在,就是在点击###后,Url上会加上一个#,
于是refresh()方法就变成了 window.location.href ="www.something.com/test.aspx#"
成为了一个锚点。
我的解决方法也很简单:
Java代码
1. window.location.href = window.location.href.replace(/#/g,'');
window.location.href = window.location.href.replace(/#/g,'');
替Url中的换所有#
一般来说这样替换不会有问题,url中一般不含有#,替换后也不会导致链接失效。
PS:虽然只是一个小问题,但开发时还是要注意。
window.location.reload(true)和reload(false)的使用简单比较
reload(true)是从服务端重新拿一下所有的页面组件,像image,css,js都得从拿,所以速度比较慢
reload(false)则是从本地缓存中拿页面组件,但是好像html自身不会缓存,所以一般用reload(false)就可以,具体是不是就不大清楚了
如果超出假设,可以考虑href,assign,replace等方法。
作者:jackxiang@向东博客 专注WEB应用 构架之美 --- 构架之美,在于尽态极妍 | 应用之美,在于药到病除
地址:https://jackxiang.com/post/2235/
版权所有。转载时必须以链接形式注明作者和原始出处及本声明!
最后编辑: jackxiang 编辑于2011-11-23 09:46
评论列表