南昌莫非:改變?yōu)g覽器位置常用方法location.href詳解介紹
使用location對象可以通過很多方式來改變?yōu)g覽器的位置。首先,也是最常用的方式,就是使用assign()方法并為其傳遞一個(gè)URL,如下所示:
location.assign(" http://what-ismyip.com");
這樣,就可以立即打開新URL并在瀏覽器的歷史記錄中生成一條記錄。如果是將location.href 或window.location設(shè)置為一個(gè)URL值,也會(huì)以該值調(diào)用assign()方法。例如,下列兩行代碼與顯式調(diào)用assign()方法的效果完全一樣:
window.location="http://www.ncmofei.com";
location.href="http://www.ncmofei.com";
在這些改變?yōu)g覽器位置的方法中,南昌網(wǎng)站建設(shè)公司技術(shù)人員認(rèn)為最常用的是設(shè)置location.href屬性。
另外,修改location對象的其他屬性也可以改變當(dāng)前加載的頁面。下面的例子展示了通過將hash.search.hostname.pathname和port屬性設(shè)置為新值來改變URL:
//假設(shè)初始URL為http://www.ncmofei.com/Abuout/
//將URL修改為http://www.ncmofei.com/Abuout/Temp
location.hash= "#Temp";
//將URL修改為http://www.ncmofei.com/Abuout/?q=javascript
location.search= "?q=j avascript";
//將URL修改為http://www.ncmofei.com/Abuout/
location.hostname="www.ncmofei.com";
//將URLL修改為http://www.ncmofei.com/mydir/
location.pathname="mydir";
//將URL修改為http://www.ncmofei.com:8080/Abuout/
location.port=8080;
每次修改location的屬性(hash除外),頁面都會(huì)以新URL重新加載。 當(dāng)通過上述任何一種方式修改URL之后,瀏覽器的歷史記錄中就會(huì)生成一條新記錄,南昌網(wǎng)站設(shè)計(jì)公司技術(shù)人員提醒用戶通過單擊"后退"按鈕都會(huì)導(dǎo)航到前一個(gè)頁面。要禁用這種行為,可以使用replace()方法。這個(gè)方法只接受一個(gè)參數(shù),即要導(dǎo)航到的URL;結(jié)果雖然會(huì)導(dǎo)致瀏覽器位置改變,但不會(huì)在歷史記錄中生成新記錄。在調(diào)用replace()方法之后,用戶不能回到前一個(gè)頁面,來看下面的例子:
< /head>
Enjoy this page for a second, because you won't be coming back here.
< /body>
如果將這個(gè)頁面加載到瀏覽器中,瀏覽器就會(huì)在1秒鐘后重新定向到www.ncmofei.com。然后,"后退"按鈕將處于禁用狀態(tài),如果不重新輸入完整的URL,則無法返回示例頁面。
與位置有關(guān)的最后一個(gè)方法是reload(),作用是重新加載當(dāng)前顯示的頁面。如果調(diào)用reload()時(shí)不傳遞任何參數(shù),頁面就會(huì)以最有效的方式重新加載。也就是說,如果頁面自上次請求以來并沒有改變過,頁面就會(huì)從瀏覽器緩存中重新加載。如果要強(qiáng)制從服務(wù)器重新加載,則需要像下面這樣為該方法傳遞參數(shù)true:
location.reload(); //重新加載(有可能從緩存中加載)
location.reload(true); //重新加載(從服務(wù)器重新加載)
位于reload()調(diào)用之后的代碼可能會(huì)也可能不會(huì)執(zhí)行,南昌網(wǎng)絡(luò)公司技術(shù)人員認(rèn)為這要取決于網(wǎng)絡(luò)延遲或系統(tǒng)資源等因素。
為此,**將reload()放在代碼的最后一行。