提供了当前窗口中加载文档的信息,以及通常的导航功能。
它既是 window 的属性,也是 document 的属性。
假设URL 是 [http://foouser:barpassword@www.wrox.com:80/WileyCDA/?q=javascript#contents](http://foouser:barpassword@www.wrox.com:80/WileyCDA/?q=)
查询字符串
location.search 返回了从问号开始直到URL未必的所有内容,但没有办法逐个访问每个查询参数。
只能用函数拆解解析查询字符串,并返回一个以每个查询参数为属性的对象
let getQueryStringArgs = function() {
// 取得没有开头问号的查询字符串
let qs = (location.search.length > 0 ? location.search.substring(1) : ""),
// 保存数据的对象
args = {};
// 把每个参数添加到 args 对象
for (let item of qs.split("&").map(kv => kv.split("="))) {
let name = decodeURIComponent(item[0]),
value = decodeURIComponent(item[1]);
if (name.length) {
args[name] = value;
}
}
return args;
}
URLSearchParams
可以检查和修改查询字符串
let qs = "?q=javascript&num=10";
let searchParams = new URLSearchParams(qs);
alert(searchParams.toString()); // " q=javascript&num=10"
searchParams.has("num"); // true
searchParams.get("num"); // 10
searchParams.set("page", "3");
alert(searchParams.toString()); // " q=javascript&num=10&page=3"
searchParams.delete("q");
alert(searchParams.toString()); // " num=10&page=3"
let qs = "?q=javascript&num=10";
let searchParams = new URLSearchParams(qs);
for (let param of searchParams) {
console.log(param);
}
// ["q", "javascript"]
// ["num", "10"]
操作地址
- location.assign 启动导航到新的URL操作,同时在浏览器历史记录中增加一条记录
- location.assign(“http://www.wrox.com“);
- 隐式调用location.assign
- window.location = “http://www.wrox.com“
- location.href = “http://www.wrox.com“ 最常见
- 都会以同一个URL值调用assign()方法
修改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.somewhere.com/WileyCDA/
location.hostname = "www.somewhere.com";
// 把 URL 修改为 http://www.somewhere.com/mydir/
location.pathname = "mydir";
// 把 URL 修改为 http://www.somewhere.com:8080/WileyCDA/
location.port = 8080;
除了 hash 之外,只要修改 location 的一个属性,就会导致页面重新加载新 URL。
- 修改hash值会在浏览器历史中增加一条新的记录
- location.replace() 不增加历史记录,一接替换
- 用户不能回到前一页
- location.reload()
- 参数 布尔值,是否强制从服务器重新加载
- 默认为 false 可能是从缓存中加载
- 参数 布尔值,是否强制从服务器重新加载