js 页面刷新location.reload和location.replace的区别小结
发布时间:2025-05-24 09:05:45 发布人:远客网络
一、js 页面刷新location.reload和location.replace的区别小结
1、reload方法,该方法强迫浏览器刷新当前页面。
2、语法: location.reload([bForceGet])
3、参数: bForceGet,可选参数,默认为 false,从客户端缓存里取当前页。true,则以 GET方式,从服务端取最新的页面,相当于客户端点击 F5("刷新")
4、replace方法,该方法通过指定URL替换当前缓存在历史里(客户端)的项目,因此当使用replace方法之后,你不能通过“前进”和“后退”来访问已经被替换的URL。
5、在实际应用的时候,重新刷新页面的时候,我们通常使用: location.reload()或者是 history.go(0)来做。因为这种做法就像是客户端点F5刷新页面,所以页面的method="post"的时候,会出现“网页过期”的提示。那是因为Session的安全保护机制。可以想到:当调用 location.reload()方法的时候, aspx页面此时在服务端内存里已经存在,因此必定是 IsPostback的。如果有这种应用:我们需要重新加载该页面,也就是说我们期望页面能够在服务端重新被创建,我们期望是 Not IsPostback的。这里,location.replace()就可以完成此任务。被replace的页面每次都在服务端重新生成。你可以这么写: location.replace(location.href)
6、replace函数在设置URL方面与location的href属性或assign函数完全一样,但是它会删除history对象的地址列表中的URL,从而使go或back等函数无法导航。
二、为什么我在js里面用window.location.reload(true);不刷新页面
1、如果该方法没有规定参数,或者参数是 false,它就会用 HTTP头 If-Modified-Since来检测服务器上的文档是否已改变。如果文档已改变,reload()会再次下载该文档。如果文档未改变,则该方法将从缓存中装载文档。这与用户单击浏览器的刷新按钮的效果是完全一样的。
2、我们都知道客户端浏览器是有缓存的,里面存放之前访问过的一些网页文件。其实缓存里存储的不只是网页文件,还有服务器发过来的该文件的最后服务器修改时间。If-Modified-Since是标准的HTTP请求头标签,在发送HTTP请求时,把浏览器端缓存页面的最后修改时间一起发到服务器去,服务器会把这个时间与服务器上实际文件的最后修改时间进行比较。
三、JS中Location使用详解
javascript中location地址对象描述的是某一个窗口对象所打开的地址。要表示当前窗口的地址,只需要使用“location”就行了;若要表示某一个窗口的地址,就使用“<窗口对象>location”。
1、Location对象存储在 Window对象的 Location属性中,表示那个窗口中当前显示的文档的 Web地址。它的 href属性存放的是文档的完整 URL,其他属性则分别描述了 URL的各个部分。这些属性与 Anchor对象(或 Area对象)的 URL属性非常相似。当一个 Location对象被转换成字符串,href属性的值被返回。这意味着你可以使用表达式 location来替代 location.href。
2、Anchor对象表示的是文档中的超链接,Location对象表示的却是浏览器当前显示的文档的 URL(或位置)。但是 Location对象所能做的远远不止这些,它还能控制浏览器显示的文档的位置。如果把一个含有 URL的字符串赋予 Location对象或它的 href属性,浏览器就会把新的 URL所指的文档装载进来,并显示出来。
3、除了设置 location或 location.href用完整的 URL替换当前的 URL之外,还可以修改部分 URL,只需要给 Location对象的其他属性赋值即可。这样做就会创建新的 URL,其中的一部分与原来的 URL不同,浏览器会将它装载并显示出来。例如,假设设置了Location对象的 hash属性,那么浏览器就会转移到当前文档中的一个指定的位置。同样,如果设置了 search属性,那么浏览器就会重新装载附加了新的查询字符串的 URL。
4、除了 URL属性外,Location对象的 reload()方法可以重新装载当前文档,replace()可以装载一个新文档而无须为它创建一个新的历史记录,也就是说,在浏览器的历史列表中,新文档将替换当前文档。
hash设置或返回从井号(#)开始的 URL(锚)。如果地址里没有“#”,则返回空字符串。
host设置或返回主机名和当前 URL的端口号。
hostname设置或返回当前 URL的主机名。
href设置或返回完整的 URL。在浏览器的地址栏上怎么显示它就怎么返回。
pathname设置或返回当前 URL的路径部分。
port设置或返回当前 URL的端口号,设置或返回当前 URL的端口号。
protocol设置或返回当前 URL的协议,取值为'http:','https:','file:'等等。
search设置或返回从问号(?)开始的 URL(查询部分)。
reload()重新加载当前文档,相当于按浏览器上的“刷新”(IE)或“Reload”(Netscape)键。
replace()用新的文档替换当前文档,相当于按浏览器上的“刷新”(IE)或“Reload”键。
四、JS中Location实例//简单跳转function gotoPage(url){ var url="url?catalogid="+catalogID; window.location=url;}//为单个页面传递参数function goto_catalog(iCat){ if(iCat<=0){ top.location="url";} else{ window.location="url?catid="+iCat;}}//对指定框架进行跳转页面function goto_iframe(url){ parent.mainFrame.location="url";}