1、location 是最有用的 BOM 对象之一,它提供了与当前窗口中加载的文档有关的信息,还提供了一些导航功能。事实上,location 对象是很特别的一个对象,因为它既是 window 对象的属性,也是document 对象的属性;
换句话说,window.location 和document.location 引用的是同一个对象。location 对象的用处不只表现在它保存着当前文档的信息,还表现在它将 URL 解析为独立的片段,让开发人员可以通过不同的属性访问这些片段。下表列出了 location 对象的所有属性(注:省略了每个属性前面的 location 前缀)。
以 http://www.wrox.com/WileyCDA/ 为例
1、location.hash : 返回URL中的hash(#号后跟零或多个字符),如果URL中不包含散列,则返回空字符串;
示例中的路径中没有哈希值,所以获取到的是空值;
例如:“https://www.jianshu.com/writer#/notebooks/40345078/notes/55224623”的哈希值是:
"#/notebooks/40345078/notes/55224623"
2、location.host :返回服务器名称和端口号(如果有)
结果:"www.wrox.com"
3、location.hostname : 返回不带端口号的服务器名称
结果:"www.wrox.com"
4、location.href : 返回当前加载页面的完整URL。而location对象的toString()方法也返回这个值;
结果:"http://www.wrox.com/WileyCDA/"
5、location.pathname : 返回URL中的目录和(或)文件名
结果:"/WileyCDA/"
6、location.port : 返回URL中指定的端口号。如果URL中不包含端口号,则这个属性返回空字符串
结果:空字符串
7、location.protocol : 返回页面使用的协议。通常是http:或https:
结果:"http:"
8、location.search :返回URL的查询字符串。这个字符串以问号开头
结果:空字符串;
2、使用location进行位置操作
//假设初始 URL 为 http://www.wrox.com/WileyCDA/
//将 URL 修改为"http://www.wrox.com/WileyCDA/#section1"
location.hash = "#section1";
//将 URL 修改为"http://www.wrox.com/WileyCDA/?q=javascript"
location.search = "?q=javascript";
//将 URL 修改为"http://www.yahoo.com/WileyCDA/"
location.hostname = "www.yahoo.com";
//将 URL 修改为"http://www.yahoo.com/mydir/"
location.pathname = "mydir";
//将 URL 修改为"http://www.yahoo.com:8080/WileyCDA/"
location.port = 8080;
每次修改 location 的属性(hash 除外),页面都会以新 URL 重新加载。
3、location.replace() 方法:
这个方法只接受一个参数,即要导航到的 URL;结果虽然会导致浏览器位置改变,
但不会在历史记录中生成新记录。在调用 replace()方法之后,用户不能回到前一个页面
4、location.reload() 方法:
作用是重新加载当前显示的页面。如果调用 reload()
时不传递任何参数,页面就会以最有效的方式重新加载。也就是说,如果页面自上次请求以来并没有改
变过,页面就会从浏览器缓存中重新加载。如果要强制从服务器重新加载,则需要像下面这样为该方法
传递参数 true。
位于 reload()调用之后的代码可能会也可能不会执行,这要取决于网络延迟或系统资源等因素。
为此,最好将 reload()放在代码的最后一行。