window.location有哪些属性和方法(js的location对象详解)
前端开发人员对 window.location对象应该不陌生,通过它不但可以获取当前页面的地址信息,还可以修改某些属性,实现页面跳转和刷新等。
我们以一个常见的 URL 为例,看看window.location包含哪些属性和方法。
window.location.href → 'https://tangjiusheng.cn/search?q=JS#comments' .origin → 'https://tangjiusheng.cn' .protocol → 'https:' .host → 'tangjiusheng.cn' .hostname → 'tangjiusheng.cn' .port → '' .pathname → '/search/' .search → '?q=JS' .hash → '#comments'
window.location.assign('url') .replace('url') .reload() .toString()
1、window.location 属性一览表
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变量,因为很容易跟其他局部变量混淆,造成不必要的麻烦。比如:
location.protocol; // 'https' function localFile() { const location = '/vue'; return location.protocol; // ❌ undefined // 这里的局部变量 "location"覆盖了全局变量 }
推荐用window.location,这样一眼就可以看出用的是全局变量。
4、window.location 方法一览表
.toString()和.href都是返回 URL,它们之间有区别吗?结果是一样的,性能上稍微有点差别。通过 JSPerf 上的性能测试结果可以看出,.href稍快,通过window.location拼接字符串的形式速度最慢。
5、性能对比
.assign() 和直接修改href是等价的,那么它们跟.replace()的区别是什么呢?
.assign() 在跳转新地址的同时会留下当前页面的访问记录,点击浏览器返回按钮会回到原来的页面,.replace()则不会保留。
.assign()执行流程:
1. 打开空白页 2. 访问 www.kaysonli.com (当前页) 3. 加载新页面 `window.location.assign('https://www.w3schools.com')` 4. 点击浏览器返回按钮 5. 回到 www.kaysonil.com
.replace()执行流程:
1. 打开空白页 2. Go to www.kaysonli.com (当前页) 3. 加载新页面 `window.location.assign('https://www.w3schools.com')` 4. 点击浏览器返回按钮 5. 回到 空白页
这个特性在用 JS 控制页面导航时非常重要,稍不注意会造成意外的的页面回退地址。
除注明外的文章,均为来源:老汤博客,转载请保留本文地址!
原文地址:https://tangjiusheng.cn/js/2903.html
原文地址:https://tangjiusheng.cn/js/2903.html
大家都在看