JavaScript

JavaScript 知识量:26 - 101 - 483

11.2 location对象><

location对象简介- 11.2.1 -

location对象是JavaScript中的一个内置对象,它主要用于表示浏览器窗口的地址(URL)信息。

location对象的属性包括:

  • href:表示完整的URL。

  • search:表示URL的查询部分(即问号后面的内容)。

  • hash:表示URL的锚部分(即井号后面的内容)。

例如,对于URL http://www.example.com/page.html?name=value#fragment,location对象的属性可以读取为:

  • location.href = "http://www.example.com/page.html?name=value#fragment"

  • location.search = "?name=value"

  • location.hash = "#fragment"

location对象还可以用于导航,例如通过location.href属性可以获取或设置窗口的地址,通过location.replace()方法可以替换当前页面的地址。

处理查询字符串- 11.2.2 -

虽然location.search可以返回从问号开始直到URL末尾的所有内容,但没有办法逐个访问每个查询参数。要处理查询字符串,逐个访问每个查询参数,有下面两种方法可以选择:

1. 使用location对象的search属性来获取URL的查询字符串,然后使用split方法和reduce函数来逐个访问每个查询参数。

例如,对于URL http://www.example.com/page.html?name=John&age=30&city=New%20York,以下代码可以获取并打印每个查询参数及其值:

// 获取查询字符串  
let search = location.search;  
  
// 以'&'为分隔符切割查询字符串  
let params = search.split('&');  
  
// 对每个查询参数进行处理  
params.reduce((acc, cur, index) => {  
  // 以'='为分隔符获取键值对  
  let [key, value] = cur.split('=');  
  
  // 将键值对添加到结果对象中  
  acc[key] = value;  
  
  return acc;  
}, {} /* 初始值 */);  
  
// 打印查询参数及其值  
console.log(params);

在以上代码中,reduce函数使用了一个初始值为空对象{},并将每个查询参数键值对添加到该对象中。最终,查询参数及其值将存储在params变量中并打印出来。

2. 使用URLSearchParams对象。URLSearchParams 是一个用于处理 URL 中的查询参数的对象,它提供了一些方法和属性来操作查询字符串。

以下是一些常用的 URLSearchParams 方法:

  • URLSearchParams.append(name, value): 添加一个新的查询参数,指定其名称和值。

  • URLSearchParams.delete(name): 删除一个指定的查询参数。

  • URLSearchParams.get(name): 获取一个查询参数的值,根据其名称。

  • URLSearchParams.getAll(name): 获取指定查询参数的所有值。

  • URLSearchParams.has(name): 检查是否存在指定的查询参数。

  • URLSearchParams.set(name, value): 设置一个查询参数的值,如果已经存在同名的参数,则将其替换。

以下是一个示例,演示如何使用 URLSearchParams:

// 获取 URL 中的查询参数  
let url = new URL('https://example.com?name=John&age=30');  
  
// 获取 URLSearchParams 对象  
let params = url.searchParams;  
  
// 获取 name 参数的值  
let name = params.get('name');  
console.log(name); // 输出 "John"  
  
// 设置 age 参数的值为 31  
params.set('age', '31');  
  
// 获取修改后的 age 参数的值  
let updatedAge = params.get('age');  
console.log(updatedAge); // 输出 "31"

除了上述方法,URLSearchParams 还具有一些属性和方法,例如 URLSearchParams.toString() 可以将查询参数转换为一个字符串,以便将其重新放入 URL 中。

操作地址- 11.2.3 -

location对象提供了许多方法来操作当前URL。以下是一些常用的location对象的方法和属性:

1. location.href: 这是location对象中最重要的属性之一,它提供了当前页面的完整URL。可以通过设置这个属性来改变当前页面的地址。例如:

location.href = "https://www.example.com";

注意:这个属性会改变浏览器的当前页面地址,所以通常只在确定不会导致页面刷新或跳转的情况下使用。

2. location.hash: 这个属性提供了URL中的锚部分(即井号#后面的部分)。可以通过设置这个属性来改变URL中的锚部分。例如:

location.hash = "#section1";

注意:这个属性不会导致页面刷新或跳转,所以它通常用于客户端导航。

3. location.search: 这个属性提供了URL的查询部分(即问号?后面的部分)。可以通过设置这个属性来改变URL的查询部分。例如:

location.search = "?name=John&age=30";

注意:这个属性会改变浏览器的当前页面地址,所以通常只在确定不会导致页面刷新或跳转的情况下使用。

4. location.protocol: 这个属性提供了当前页面的协议(例如http:或https:)。可以通过设置这个属性来改变当前页面的协议。例如:

location.protocol = "https:";

注意:这个属性会改变浏览器的当前页面地址,所以通常只在确定不会导致页面刷新或跳转的情况下使用。

5. location.host: 这个属性提供了当前页面的主机名和端口号。可以通过设置这个属性来改变当前页面的主机名和端口号。例如:

location.host = "www.example.com:8080";

注意:这个属性会改变浏览器的当前页面地址,所以通常只在确定不会导致页面刷新或跳转的情况下使用。

6. assign():这个方法用于在当前页面卸载时,加载新的页面。它接受一个参数,即要加载的新的URL。例如:

location.assign("https://www.example.com");

当这段代码运行时,浏览器会停止当前页面,然后加载并显示"https://www.example.com"页面,同时在浏览器历史记录中增加一条记录。

7. reload():这个方法用于重新加载当前页面。调用reload()而不传参数,页面会以最有效的方式重新加载。也就是说,如果页面自上次请求以来没有修改过,浏览器可能会从缓存中加载页面。如果想强制从服务器重新加载,可以给reload()传个true。例如:

location.reload();      // 重新加载,可能是从缓存加载
location.reload(true);  // 重新加载,从服务器加载