window.location
我们以一个常见的 URL 为例,看看window.location包含哪些属性和方法。
window.location.href → 'https://www.jianshu.com/search?q=JS#comments'
.origin → 'https://www.jianshu.com'
.protocol → 'https:'
.host → 'www.jianshu.com'
.hostname → 'www.jianshu.com'
.port → ''
.pathname → '/search/'
.search → '?q=JS'
.hash → '#comments'
window.location.assign('url')
.replace('url')
.reload()
.toString()
1. window.location 属性
1) .origin (URL 基础地址,包括协议名、域名和端口号)
2) .protocol协议 (http: 或 https:)
3) .host (域名+端口号)
4) .hostname (域名)
5) .port (端口号)
6) .pathname路径(以/开头)
7) .search (查询字符串,以?开头)
8) .hash(页面锚点,以#开头)
9) .href(完整 URL)
比较容易混淆的是host和hostname这两个属性,区别是前者还包含了端口号。
2.修改属性值
以上属性除了origin是只读属性,其他都可以修改。修改后的效果就是跳转到相应的新地址。
window.location.protocol = 'https'
.host = 'localhost:8080'
.hostname = 'localhost'
.port = '8080'
.pathname = 'path'
.search = 'q=vue' // (不需要带 ?)
.hash = 'target' // (不需要带 #)
.href = 'https://www.kaysonli.com'
3.如何访问 Location 对象
window.location返回 Location 类型的一个实例对象,包含当前页面的地址信息。可以通过以下几种方式访问:
window.location → Location
window.document.location → Location
document.location → Location
location → Location
这几个变量都是等价的,因为它是全局变量。但是建议避免直接用location变量,因为很容易跟其他局部变量混淆,造成不必要的麻烦。
4. window.location动作
1) .assign()导航到指定 URL(.assign() 和直接修改href是等价的)
2) .replace()导航到指定 URL并删除当前页面的访问记录(.assign() 在跳转新地址的同时会留下当前页面的访问记录,点击浏览器返回按钮会回到原来的页面,.replace()则不会保留。)
3) .reload()重新加载当前页面
4).toString()返回 URL 字符串(.toString()和.href都是返回 URL结果是一样的,性能上稍微有点差别。通过 JSPerf 上的性能测试结果可以看出,.href稍快)
1.
location.assign("http://www.baidu.com");
2.
location.replace("http://www.baidu.com");
3.
location.reload();
4.
location.toString()