1. 程式人生 > >使用location操作瀏覽器的頁面跳轉

使用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);//重新載入(頁面所有內容重新從伺服器獲取);