Location - 表示其链接到的对象的位置(URL)
Location
接口表示其链接到的对象的位置(URL)。对其进行的更改将反映在与其相关的对象上。 Document
和 Window
接口都有这样一个链接的 Location
,可分别通过 Document.location
和 Window.location
访问,两者是同一个对象。
属性
Location
接口没有继承任何属性,但会实现 URLUtils
中的属性。
Location.href
一个 DOMString
包含整个 URL。如果更改,关联文档将导航到新页面。它可以设置与已关联文档不同的源。
Location.protocol
一个 DOMString
,包含 URL 的协议方案,包括结尾的 ':'
。
Location.host
一个 DOMString
,包含主机(即 hostname),':'
和 URL 的 port。
Location.hostname
一个 DOMString
,包含 URL 的域名。
Location.port
一个 DOMString
,包含 URL 的端口号。
Location.pathname
一个 DOMString
,包含开始的 '/'
和后面跟着的 URL 路径。
Location.search
一个 DOMString
,包含一个 '?'
和后面跟着 URL 的参数或 “查询字符串”。现代浏览器提供了 URLSearchParams 和 URL.searchParams 以便很容易从查询字符串中解析出参数。
Location.hash
一个 DOMString
,其中包含 '#'
和后跟着 URL 的片段标识符。
Location.username
一个 DOMString
,包含在域名之前指定的用户名。
Location.password
一个 DOMString
,包含在域名之前指定的密码。
Location.origin
只读
返回一个 DOMString
,包含该 Location
的源地址的标准形式。
方法
Location
接口没有继承任何属性,但实现了 URLUtils
中的方法。
Location.assign()
加载在参数中指定的 URL。
Location.reload()
从当前 URL 重新加载资源。它的可选唯一参数是 Boolean
,当它为 true
时,会使页面始终从服务器重新加载。如果是 false
或未指定,则浏览器可以从其缓存重新加载页面。
Location.replace()
用提供的 URL 替换当前的资源。与 assign()
方法的区别在于,在使用 replace()
之后,当前页面将不会保存在会话 History
中,这意味着用户将无法使用返回按钮来导航到它。
Location.toString()
返回包含整个 URL 的 DOMString
。它是 URLUtils.href
的同义词,但它不能用于修改值。
实例
// 为此实例创建锚元素并使用 href 属性
// 更正确的操作方法是访问相应的 URL 并使用 document.location 或 window.location 获取以下参数
var url = document.createElement('a');
url.href = 'https://developer.mozilla.org:8080/en-US/search?q=URL#search-results-close-container';
console.log(url.href); // https://developer.mozilla.org:8080/en-US/search?q=URL#search-results-close-container
console.log(url.protocol); // https:
console.log(url.host); // developer.mozilla.org:8080
console.log(url.hostname); // developer.mozilla.org
console.log(url.port); // 8080
console.log(url.pathname); // /en-US/search
console.log(url.search); // ?q=URL
console.log(url.hash); // #search-results-close-container
console.log(url.origin); // https://developer.mozilla.org:8080
规范
规范 | 状态 | 备注 |
---|---|---|
HTML Living Standard Location 的定义 |
现行的标准 | 自从 HTML5 以来没有变化。 |
HTML5 Location 的定义 |
推荐 | 初始定义。 |
桌面浏览器兼容性
特性 | Chrome | Edge | Firefox | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|---|
基础支持 | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 |
assign | 支持 | 12 | 支持 | 支持 | 支持 | 支持 |
hash | 支持 | 12 | 22 | 支持 | 支持 | 支持 |
host | 支持 | 12 | 22 | 支持 | 支持 | 支持 |
hostname | 支持 | 12 | 22 | 支持 | 不支持 | 支持 |
href | 支持 | 12 | 22 | 支持 | 支持 | 支持 |
origin | 支持 | 12 | 261 | 112 | 10 | 支持3 |
password | 支持 | 未知 | 26 | 未知 | 未知 | 未知 |
pathname | 支持 | 12 | 224 | 支持5 | 支持 | 支持 |
port | 支持 | 12 | 22 | 支持 | 支持 | 支持 |
protocol | 支持 | 12 | 22 | 支持 | 支持 | 支持 |
reload | 支持 | 126 | 支持 | 支持6 | 支持 | 支持 |
replace | 支持 | 12 | 支持 | 支持 | 支持 | 支持 |
search | 支持 | 12 | 227 | 支持 | 支持 | 支持 |
toString | 52 | 支持 | 22 | 118 | 未知 | 未知 |
username | 支持 | 未知 | 26 | 未知 | 未知 | 未知 |
移动浏览器兼容性
特性 | Android | Chrome for Android | Edge mobile | Firefox for Android | IE mobile | Opera Android | iOS Safari |
---|---|---|---|---|---|---|---|
基础支持 | 支持 | 未知 | 未知 | 支持 | 未知 | 支持 | 支持 |
assign | 支持 | 支持 | 未知 | 支持 | 未知 | 支持 | 支持 |
hash | 支持 | 支持 | 未知 | 22 | 未知 | 支持 | 支持 |
host | 支持 | 支持 | 未知 | 22 | 未知 | 支持 | 支持 |
hostname | 支持 | 支持 | 未知 | 22 | 未知 | 不支持 | 支持 |
href | 支持 | 支持 | 未知 | 22 | 未知 | 支持 | 支持 |
origin | 支持 | 支持 | 未知 | 261 | 未知 | 未知 | 5 |
password | 支持 | 支持 | 未知 | 26 | 未知 | 未知 | 未知 |
pathname | 支持 | 支持 | 未知 | 224 | 未知 | 支持 | 支持 |
port | 支持 | 支持 | 未知 | 22 | 未知 | 支持 | 支持 |
protocol | 支持 | 支持 | 未知 | 22 | 未知 | 支持 | 支持 |
reload | 支持 | 支持 | 未知 | 支持 | 未知 | 支持 | 支持 |
replace | 支持 | 支持 | 未知 | 支持 | 未知 | 支持 | 支持 |
search | 支持 | 支持 | 未知 | 227 | 未知 | 支持 | 支持 |
toString | 52 | 52 | 未知 | 22 | 未知 | 未知 | 未知 |
username | 支持 | 支持 | 未知 | 26 | 未知 | 未知 | 未知 |
1. 在 Firefox 49 之前,使用 blob
协议的 URL 结果错误地返回 null
。
2. 内网(Intranet)站点设置为兼容性视图时,它将模拟 IE7 并省略了 window.location.origin
。
3. 根据 Apple 的文档,自 Safari 10(桌面版和移动版)以来都支持 window.location.origin
,但该功能似乎也存在于某些旧版本中。因此,无法可靠地确定支持此功能的确切版本。
4. 在 Firefox 53 之前,pathname
属性返回错误的 URL 部分。例如,对于 http://z.com/x?a=true&b=false
的网址,pathname
属性将返回 '/x?a=true&b=false'
,而不是返回 '/x'
。
5. Internet Explorer 不提供路径名中的前导斜杠字符,(例如返回 docs/Web/API/Location 而不是 /docs/Web/API/Location)。
6. 如果添加到 “受信任的站点” 的页面包含跨源 iframe,则从 iframe 中调用 reload()
会重新加载受信任的页面(换句话说,首页重新加载,而不是 iframe)。
7. 在 Firefox 53 之前,search
属性返回了 URL 的错误部分。例如,对于 http://z.com/x?a=true&b=false
的网址,search
将返回 '',而不是分别返回 '?a=true&b=false'
。
8. 内网(Intranet)站点设置为兼容性视图时,它将模拟 IE7 并省略了 window.location.toString
。
相关链接
- 创建这样一个对象的两种方法:
Window.location
和Document.location
。 - URL 相关接口:
URL
,URLSearchParams
和HTMLHyperlinkElementUtils