是最有用的BOM对象之一!是个很特殊的对象,因为它即是window对象属性,也是document对象属性:
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的能力:
function getQueryStringArgs(){}
位置操作
使用 location 对象可以通过很多方式来改变浏览器的位置。首先,也是最常用的方式,就是使用assign()方法并为其传递一个 URL,如下所示:
location.assign("http://www.wrox.com");
下列两行代码与,显式调用 assign()方法的效果完全一样:
window.location = "http://www.wrox.com";
location.href = "http://www.wrox.com";
在这些改变浏览器位置的方法中,最常用的是设置 location.href 属性,除此之外,修改location对象的其他属性也可以改变当前加载的页面。也可以通过将hash、search、hostname、pathname 和 port 属性设置为新值来改变 URL:
//假设初始 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 重新加载。