JavaScript 位置

摘要:在本教程中,您将了解 JavaScript Location 对象以及如何有效地操作位置。

Location 对象表示文档的当前位置(URL)。您可以通过引用 windowdocument 对象的 location 属性来访问 Location 对象。

window.locationdocument.location 都链接到同一个 Location 对象。

JavaScript 位置属性

假设当前 URL 为

http://localhost:8080/js/index.html?type=listing&page=2#title
Code language: JavaScript (javascript)

下图说明了 Location 对象的属性

JavaScript Location

Location.href

location.href 是一个字符串,包含整个 URL。

"http://localhost:8080/js/index.html?type=listing&page=2#title"
Code language: JSON / JSON with Comments (json)

Location.protocol

location.protocol 表示 URL 的协议方案,包括最后的冒号 (:)。

'http:'
Code language: JavaScript (javascript)

Location.host

location.host 表示主机名。

"localhost:8080"
Code language: JSON / JSON with Comments (json)

Location.port

location.port 表示 URL 的端口号。

"8080"
Code language: JSON / JSON with Comments (json)

Location.pathname

location.pathname 包含一个初始 '/',后跟 URL 的路径。

"/js/index.html"
Code language: JSON / JSON with Comments (json)

Location.search

location.search 是一个字符串,表示 URL 的查询字符串。

"?type=listing&page=2"
Code language: JSON / JSON with Comments (json)

Location.hash

location.hash 返回一个字符串,其中包含一个 '#',后跟 URL 的片段标识符。

"#title"
Code language: JSON / JSON with Comments (json)

Location.origin

location.origin 是一个字符串,包含特定位置来源的规范形式。

"http://localhost:8080"
Code language: JSON / JSON with Comments (json)

Location.username

location.username 是一个字符串,包含域名之前的用户名。

Location.password

location.password 是一个字符串,表示域名之前指定的密码。

操作位置

Location 对象具有一系列有用的方法:assign()reload()replace()

 assign()

assign() 方法接受一个 URL,立即导航到该 URL,并在浏览器的历史记录堆栈中创建一个条目。

location.assign('https://tutorial.javascript.ac.cn');
Code language: JavaScript (javascript)

window.locationlocation.href 设置为 URL 时,会隐式调用 assign() 方法。

window.location = 'https://tutorial.javascript.ac.cn';
location.href = 'https://tutorial.javascript.ac.cn';
Code language: JavaScript (javascript)

如果更改 hostnamepathnameport 属性,页面将使用新值重新加载。请注意,更改 hash 属性不会重新加载页面,但会在浏览器的历史记录堆栈中记录新条目。

在浏览器的历史记录堆栈中创建新条目后,您可以单击浏览器的后退按钮导航到上一页。

replace()

replace() 方法类似于 assign() 方法,只是它不会在浏览器的历史记录堆栈中创建新条目。因此,您无法单击后退按钮返回上一页。

以下代码使用 replace() 方法在 3 秒后导航到 URL https://tutorial.javascript.ac.cn

setTimeout(() => {
    location.replace('https://tutorial.javascript.ac.cn');
}, 3000);
Code language: JavaScript (javascript)

reload()

reload() 方法重新加载当前显示的页面。当您不带参数调用 reload() 方法时,浏览器将以最有效的方式重新加载页面,例如,如果页面资源自上次请求以来没有更改,它将从浏览器缓存中加载页面资源。

reload();

要强制从服务器重新加载,请将 true 传递给 reload() 方法。

reload(true);    
Code language: JavaScript (javascript)

请注意,reload() 之后的代码是否执行取决于许多因素,例如网络延迟和系统资源。因此,将 reload() 放在代码的最后一行是一个好习惯。

摘要

  • Location 对象表示页面的当前 URL。可以通过 window.locationdocument.location 访问它。
  • Location 对象具有许多表示 URL 的属性,例如 protocolhostpathnamesearch
  • 要操作位置,您可以设置其属性的新值,或使用 assign()replace()reload() 方法。
本教程是否有帮助?