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() 方法清除表单控件值,而在某些浏览器中单击“重新加载/刷新”按钮后可能会保留该值。