是最有用的BOM对象之一!是个很特殊的对象,因为它即是window对象属性,也是document对象属性:

  1. window.location === document.location //true

location 对象属性

  • location.hash 返回URL中的hash(#号后跟零或多个字符),如果URL中不包含散列,则返回空字符串
  • location.host 返回服务器名称和端口号(如果有)
  • location.hostname 返回不带端口号的服务器名称
  • location.href 返回当前加载页面的完整URL。而location对象的toString()方法也返回这个值
  • location.pathname 返回URL中的目录和(或)文件名
  • location.port 返回URL中指定的端口号。如果URL中不包含端口号,则这个属性返回空字符串
  • location.protocol 返回页面使用的协议。通常是http:或https:
  • location.search 返回URL的查询字符串。这个字符串以问号开头

查询字符串参数

尽管 location.search 返回从问号到 URL 末尾的所有内容,但却没有办法逐个访问其中的每个查询字符串参数。所以,可以封装以下方法去扩展,location.search的能力:

  1. function getQueryStringArgs(){}

位置操作

使用 location 对象可以通过很多方式来改变浏览器的位置。首先,也是最常用的方式,就是使用assign()方法并为其传递一个 URL,如下所示:

  1. location.assign("http://www.wrox.com");

下列两行代码与,显式调用 assign()方法的效果完全一样:

  1. window.location = "http://www.wrox.com";
  2. location.href = "http://www.wrox.com";

在这些改变浏览器位置的方法中,最常用的是设置 location.href 属性,除此之外,修改location对象的其他属性也可以改变当前加载的页面。也可以通过将hash、search、hostname、pathname 和 port 属性设置为新值来改变 URL:

  1. //假设初始 URL 为 http://www.wrox.com/WileyCDA/
  2. //将 URL 修改为"http://www.wrox.com/WileyCDA/#section1"
  3. location.hash = "#section1";
  4. //将 URL 修改为"http://www.wrox.com/WileyCDA/?q=javascript"
  5. location.search = "?q=javascript";
  6. //将 URL 修改为"http://www.yahoo.com/WileyCDA/"
  7. location.hostname = "www.yahoo.com";
  8. //将 URL 修改为"http://www.yahoo.com/mydir/"
  9. location.pathname = "mydir";
  10. //将 URL 修改为"http://www.yahoo.com:8080/WileyCDA/"
  11. location.port = 8080;

注意⚠️:
每次修改 location 的属性(hash 除外),页面都会以新 URL 重新加载。