再次看到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.hrefwindow.location为新的URL,也会调用assign(),所以下面的三种方式效果是完全相同的。

1
2
3
location.assign("//www.lijundong.com");
window.location="//www.lijundong.com";
location.href="//www.lijundong.com";

location.href可以被修改,同理可以通过修改上面介绍的其他属性改变URL

1
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,强制页面从服务器加载

以上。