BOM 之 location 对象
再次看到BOM的location,涉及到URL的组成,做个总结,记个笔记先。
属性
举个栗子:
现有一url://lijundong.com:80/blog?name=bom#function
对应属性如下:
属性 | 说明 | 例子 |
---|---|---|
hash | 返回URL中的hash,即锚,若无,返回”” | “#function” |
host | 返回服务器名与端口(若有) | “www.lijundong.com:80" |
hostname | 返回不带端口的服务器名 | “www.lijundong.com" |
href | 返回当前页面的完整URL | “//lijundong.com:80/blog?name=bom#function” |
pathname | 返回URL中的目录或者文件名 | “/blog” |
port | 返回端口号,若无,返回”” | “80” |
protocol | 返回使用的协议,常用http或https | “https:” |
search | 返回页面的查询字符串 | “?name=bom” |
位置操作
assign()
通过传递新的URL打开页面location.assign("//www.lijundong.com");
值得一提的是通过修改location.href
或window.location
为新的URL,也会调用assign()
,所以下面的三种方式效果是完全相同的。1
2
3location.assign("//www.lijundong.com");
window.location="//www.lijundong.com";
location.href="//www.lijundong.com";
location.href
可以被修改,同理可以通过修改上面介绍的其他属性改变URL1
2
3
4
5
6//对"//lijundong.com:80/blog?name=bom#function"修改
location.hash="#dom";
location.search="?name=dom";
loaction.hostname="www.leeon.com";
location.pathname="/web";
location.port="8080";
replace()
通过上面的方式修改URL,浏览器的历史记录中会生成一条记录,用户可通过浏览器的back按钮回退,replace()
方式可禁止这种情况。location.replace("www.google.com");//用户回退不到www.lijundong.com
reload()
reload()
可能是我们最熟悉的功能,重新加载,这个方法调用时是有参数的。
location.reload();//可能从缓存加载
如果不传递参数,页面将会以最有效的方式加载,即页面从上次请求以来没有修改,页面会从浏览器缓存中重新加载location.reload(true);//从服务器加载
传递参数true,强制页面从服务器加载
以上。
作者: leeon
来源: https://leeon.im
链接: https://leeon.im/location-of-bom/
本文采用知识共享署名-非商业性使用 4.0 国际许可协议进行许可