Location对象常用属性

Location对象

最近做项目时,由于自己没有很好掌握location相关的知识,导致项目出现了生产问题,特此记录总结。

1. location介绍

location是最有用的BOM对象之一,提供了当前窗口中加载文档的信息,以及通常的导航功能。它既是window的属性,也是document的属性。window.location和document.location指向同一个对象。(来源:js高级程序设计)

2. 常用属性

如果当前浏览器加载的URL为: http://www.xixihaha.com:8080/loginPage/?q=helloWorld#home
那么对应的属性取值如下:
hash:"#home",URL散列值,如果没有为空字符串;
host:“www.xixihaha.com:8080”,服务器名及端口号;
hostname:“www.xixihaha.com”,服务器名;
href:“http://www.xixihaha.com:8080/loginPage/?q=helloWorld#home”,加载当前页面的完整URL;
pathname:"/loginPage/",URL中的路径和文件名;
port:“8080”,请求的端口,如果没有则返回空字符串;
protocol:“http:”,页面使用的协议,通常为http:或https;
search:"?q=helloWorld",URL的查询字符串;
origin:“http://www.xixihaha.com”,URL的源地址。只读属性

2.1 获取查询字符串
let getQueryStringArgs = function(){
   //保存数据的对象
   let args = {};
   //取得没有开头问好的查询字符串
   let qs = location.search.substring(1);
   //查询字符串为空,返回空对象
   if (!qs) return args;
   //把每个参数添加到args对象
   for (let item of qs.split('&').map(v => v.split('='))) {
      let key = decodeURIComponent(item[0]),
      val = decodeURIComponent(item[1]);
      if (key.length) {
         args[key] = val;
      }
   }
   return args;
}
2.2 URLSearchParams构造函数

URLSearchParams提供了一组API方法,可以检查和修改查询字符串。

let qs = "?name=hello&psd=123456";
let searchParams = new URLSearchParams(qs);
searchParams.has("name"); // true
searchParams.get("name"); // hello
searchParams.set("flag","true"); //toString()方法打印 name=hello&psd=123456&flag=true
searchParams.delete("psd"); //toString()方法打印 name=hello&flag=true
2.3 操作地址

1.location.assign()

location.assign("https://www.baidu.com")

2.location.href

window.location = "https://www.baidu.com"
location.href = "https://www.baidu.com"

一般location.href使用最常见。
3.修改其他属性
除了hash之外,只要修改了location的一个属性,就会导致页面重新加载新URL。
4.location.reload()

location.reload() // 重新加载,可能从缓存加载
location.reload(true) //重新加载,从服务器加载

一般把reload()作为最后一行代码,因为位于其之后的代码可能执行也可能不执行,这取决于网络延迟和系统资源等因素。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值