JavaScript 視窗位置

在本教程中,你將瞭解 JavaScript 視窗位置物件。

位置物件

視窗的位置屬性(即 window.location)是對位置 Location 物件的引用; 它表示該視窗中顯示的文件的當前 URL。

由於 window 物件位於作用域鏈的頂部,因此 window.location 可以在沒有 window. 字首的情況下訪問物件的屬性,例如 window.location.href 可以寫為 location.href 。以下部分將向你展示如何使用 window 物件的 location object 屬性獲取頁面的 URL 以及主機名,協議等。

獲取當前頁面 URL

你可以使用 window.location.href 屬性獲取當前頁面的完整 URL。

以下示例將顯示按鈕單擊時頁面的完整 URL:

<script>
function getURL() {
    alert("The URL of this page is: " + window.location.href);
}
</script>
 
<button type="button" onclick="getURL();">Get Page URL</button>

獲取 URL 的不同部分

類似地,可以使用位置物件的其他屬性,例如 protocolhostnameportpathnamesearch 等等,以獲得 URL 的不同部分。

請嘗試以下示例,以瞭解如何使用視窗的 location 屬性。

// Prints complete URL
document.write(window.location.href);
  
// Prints protocol like http: or https:
document.write(window.location.protocol); 
 
// Prints hostname with port like localhost or localhost:3000
document.write(window.location.host);
  
// Prints hostname like localhost or www.example.com
document.write(window.location.hostname);
 
// Prints port number like 3000
document.write(window.location.port);
  
// Prints pathname like /products/search.php
document.write(window.location.pathname); 
 
// Prints query string like ?q=ipad
document.write(window.location.search);
 
// Prints fragment identifier like #featured
document.write(window.location.hash);

注意: 當你訪問網站時,你始終連線到特定埠(例如 http://localhost:3000)。但是,大多數瀏覽器根本不會顯示預設埠號,例如,HTTP 為 80,HTTPS 為 443。

載入新檔案

你可以使用 location 物件的 assign() 方法,比如 window.location.assign() 來載入作為引數提供的 URL 的另一個資源,例如:

<script>
function loadHomePage() {
    window.location.assign("http://www.tastones.com");
}
</script>
 
<button type="button" onclick="loadHomePage();">Load Home Page</button>

你也可以使用 replace() 方法載入幾乎與 assign() 相同的新文件。不同之處在於它不會在瀏覽器的歷史記錄中建立條目,這意味著使用者將無法使用後退按鈕導航到該條目。這是一個例子:

<script>
function loadHomePage(){
    window.location.replace("http://www.tastones.com");
}
</script>
 
<button type="button" onclick="loadHomePage();">Load Home Page</button>

或者,你可以使用 window.location.href 屬性在視窗中載入新文件。它產生與使用 assign() 方法相同的效果。這是一個例子:

<script>
function loadHomePage() {
    window.location.href = "http://www.tastones.com";
}
</script>
 
<button type="button" onclick="loadHomePage();">Load Home Page</button>

動態重新載入頁面

reload() 方法可用於動態重新載入當前頁面。

你可以選擇指定布林引數 truefalse 。如果引數為 true ,則該方法將強制瀏覽器從伺服器重新載入頁面。如果指定 false 或未指定,則瀏覽器可以從其快取重新載入頁面。這是一個例子:

<script>
function forceReload() {
    window.location.reload(true);
}
</script>
 
<button type="button" onclick="forceReload();">Reload Page</button>

注意: 呼叫 reload() 方法的結果與單擊瀏覽器的“重新載入/重新整理”按鈕不同。reload() 方法清除表單控制元件值,而在某些瀏覽器中單擊“重新載入/重新整理”按鈕後可能會保留該值。