在web开发中经常会遇到页面刷新的系列问题,现在总结如下:
1、js 刷新页面window.location.reload();
强制刷新页面,从服务器重新请求! (如果有数据提交的话,会提示是否提交的(是和否选项)),促使浏览器重新下载当前的页面。
2、window.location.href设置或返回完整的 URL。
在js中关于location.href的用法究竟有哪几种,究竟有哪些区别?
目前在开发中经常要用到的几种形式有:
self.location.href;
window.location.href;
this.location.href;
location.href;
parent.location.href;
top.location.href;
top.location.href=”url” 在顶层页面打开url(跳出框架)
self.location.href=”url” 仅在本页面打开url地址
parent.location.href=”url” 在父窗口打开Url地址
this.location.href=”url” 用法和self的用法一致 if (top.location == self.location) 判断当前location 是否为顶层来 禁止frame引用
如果页面当中有自定义的frame的话,也可以将parent self top换为自定义frame的名称 效果就是在自定义frame窗口打开url地址
3、replace 方法,该方法通过指定URL替换当前缓存在历史里(客户端)的项目,因此当使用replace方法之后,你不能通过“前进”和“后退”来访问已经被替换的URL。
语法:location.replace(URL) 参数: URL
在实际应用的时候,重新刷新页面的时候,我们通常使用: location.reload() 或者是 history.go(0) 来做。因为这种做法就像是客户端点F5刷新页面,所以页面的method="post"的时候,会出现“网页过期”的提示。那是因为Session的安全保护机制。可以想到: 当调用 location.reload() 方法的时候, jsp页面此时在服务端内存里已经存在, 因此必定是 IsPostback 的。如果有这种应用: 我们需要重新加载该页面,也就是说我们期望页面能够在服务端重新被创建, 我们期望是 Not IsPostback 的。这里,location.replace() 就可以完成此任务。被replace的页面每次都在服务端重新生成。你可以这么写: location.replace(location.href)
促使浏览器根据 URL 参数中给出的地址 (URL) 下载页面,同时在当前浏览器存储的历史记录 (即所浏览过的页面的列表) 中使用新的地址(即此方法中的 URL 参数) 覆盖当前的页面。
使用 replace() 方法意味着用户将不能通过按 “返回” 按钮回到前边浏览过的那个页面,但这并不是说用户完全不能回到原来的所有页面,他们只不过是无法回到被 replace() 方法替换的那一个页面 (注意:只是被替换的那一个页面)。
PS:window.location.Reload()和window.location.href 区别:
window.location.reload()与window.location.href=window.location.href
两者都能刷新窗口,不同的是,前者刷新页面时若有数据提交会提示是否提交数据,就是我们经常看到的那个讨厌的提示框;后者则不会,是定向url提交数据。所以在刷新页面时最好是用后者