之所以document.write(window.location)
写位置,是因为 的toString
方法window.location
,真正返回window.location.href
。
// This will fallback to the location.pathname if this
// is not the location already or not an anchor.
var path = this.pathname || window.location.pathname;
var part = path.split('/').pop();
路径名是域名之后的所有内容。所以,http://example.com/something/file
分解如下:
- 协议:
http:
- 主机名:
example.com
- 路径名:
something/file
- 参考资料:
http://example.com/something/file
(还有端口、搜索(?this=that
)和哈希(#hash
),在这种情况下都是空的)
something/file
所以,我将split
它放入一个数组中,只要这是 a /
,这将是["something", "file"]
之后,我pop
将关闭数组的最后一部分,在本例中为“文件”
两者window.location
和任何<a>
标签都具有这些属性。因此,如果您需要解析 URL,您可以在 javascript 中执行以下操作:
var anchor = document.createElement('a');
anchor.href = '/about'; // this could be any relative or absolute url
如果您需要,现在anchor
将拥有所有这些属性。不需要正则表达式或任何东西。
更新
在较新的浏览器中(不包括 IE,除非您使用url-polyfill),您可以使用URL
而不是<a />
这样:
const url = new URL('/about', this.location)
// or if you don't care about the host, you can do the following
// const url = new URL('http://localhost/about')
这包含所有其他信息,加上url.searchParams
,因此您也不必自己解析搜索字符串。