【浏览器模型】location对象、url解码

736 阅读2分钟

location对象

location对象是浏览器提供的原生对象,可以通过window.location或者document.location来拿到这个对象

属性

location对象提供以下属性:

1、location.href 打印当前页面的url

2、location.protocol 当前页面的协议,包括冒号

3、location.host 主机名,如果默认端口号不是80或433,还会打印端口号

4、location.hostname 主机名,不含端口号

5、location.port 端口号

6、location.pathname 路径

7、location.search 查询字符串?后面的参数

8、location.hash 片段字符串#开始的内容

9、location.username 域名前面的用户名

10、location.password 域名前面的密码

11、location.origin 端口、协议、主机名 (这个一样代表同源)

如果写location.href ='xxxxx',那么页面会跳转到该页面,功能类似window.open()

location.hash ='#id' 可以实现让网页跳转到锚点

location.href是唯一一个可以跨域使用的属性,也就是在非同源的网页实现页面跳转。

方法

location.assign('https://baidu.com') 接受一个字符串作为参数,来实现页面的跳转。如果字符串不正确,就会报错

location.replace("https://baidu.com") 接受一个字符串作为参数,也可以实现页面的跳转,与assign的区别是它跳过去后没办法选择返回。它的一个应用是,当脚本发现当前是移动设备时,就立刻跳转到移动版网页。

Location.reload() reload方法使得浏览器重新加载当前网址,相当于按下浏览器的刷新按钮。它接受一个布尔值作为参数。如果参数为true,浏览器将向服务器重新请求这个网页,并且重新加载后,网页将滚动到头部(即scrollTop === 0)。如果参数是false或为空,浏览器将从本地缓存重新加载该网页,并且重新加载后,网页的视口位置是重新加载前的位置。

location.toString() 返回整个url的字符串,相当于读取location.href

url解码

网页的url包含元字符、语义字符。元字符也就是? # :等,语义字符就是a-z``0-9等字符。

比如说我们的汉字 就不是url合法字符,需要通过转义才能被浏览器读取。

比如我百度搜索前端,百度接收到参数wd=前端,最终会被解析成wd=%E5%89%8D%E7%AB%AF

js也提供四个url编码/解码方法

  • encodeURI
  • encodeURIcomponent
  • decodeURI
  • decodeURIcomponent

上面方式只用encodeURI跟decodeURI就行,因为component尾缀的会转义到元字符