使用location操作瀏覽器的頁面跳轉
使用location物件可以通過很多方式來改變瀏覽器的位置,總結如下:
跳轉到新的URL | loncation.assign | loncation.assign("http://www.baidu.com") |
window.location | window.location="http://www.baidu.com" | |
location.href | location.href="http://www.baidu.com" | |
設定或改變URL的部分值, |
hash(片段識別符號) |
假設URL初始值為http://www.wrox.com/WileyCDA/ location.hash="#section1"; 將URL修改為了http://www.wrox.com/WileyCDA/#section1 |
search(查詢字串) |
假設URL初始值為http://www.wrox.com/WileyCDA/ location.search="?setion1"; //將URL修改為“http://www.wrox.com/WileyCDA/?section1”; |
|
hostname(伺服器名稱) |
假設URL初始值為http://www.wrox.com/WileyCDA/ location.hostname="www.yahoo.com"; //將URL修改為“http://www.yahoo.com”; |
|
pathname(檔案路徑) |
假設初始URL為“http://www.yahoo.com”; location.pathname="mydir"; //將URL修改為"http://www.yahoo.com/mydir/" |
|
port(埠號) |
假設初始URL為“http://www.yahoo.com/mydir/”; location.port=8080;//無需雙引號; //將URL修改為"http://www.yahoo.com:8080/WileyCDA/" |
備註:在IE8、Firefox1、Safari2+、Opear9+和Chrome中,修改hash(片段識別符號)的值會在瀏覽器的歷史記錄中生成一條新記錄。在IE的早期版本中,hash屬性不會在使用者單擊“後退”和前進按鈕時被更新,只會在使用者單擊包含hash的URL時才會被更新。
如果需要禁用生成新的記錄,則可以使用replace()方法,使用這個方法之後,瀏覽器位置雖然會發生改變,但不會在瀏覽器中生成新的訪問記錄,使用者無法後退,不能回到前一個頁面,例子如下:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>你無法再次回到這個頁面</title>
</head>
<body>
<p>三秒之後這個頁面會跳轉到百度,之後無法再回到之後頁面</p>
<span id="second"></span>
<script type="text/javascript">
var second=document.getElementById("second");
var i=3;
function goTo(){
second.innerHTML=i;
i--;
if(i>0){
//通過超時呼叫實現延時呼叫的效果
setTimeout(goTo,1000);
}else{
location.replace("http://www.baidu.com");
};
};
goTo();
</script>
</body>
</html>
頁面跳轉之後,無回退鍵;
location的最後一個方法是reload(),這個方法選擇是否可以傳遞一個引數true;
如果location呼叫reload()方法不傳遞引數true,則瀏覽器會採用最有方式,在瀏覽器已有的快取上載入當前頁面,如果傳遞引數true,則瀏覽器會將當前頁面全部重新載入不使用快取;
location.reload();//重新載入(有可能從快取中載入)
location.reload(true);//重新載入(頁面所有內容重新從伺服器獲取);