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尾缀的会转义到元字符