跳转到内容

Newquery

来自代码酷
  1. JavaScript Location 对象
    • Location** 对象是 JavaScript **BOM(Browser Object Model)** 的一部分,它提供了当前窗口(或框架)加载的文档的 URL 信息,并允许开发者读取和修改 URL 的不同部分(如协议、主机名、路径、查询参数等)。此外,它还提供了一些方法用于页面导航,如重新加载页面或跳转到新 URL。
    1. Location 对象的属性

Location 对象包含以下常用属性,每个属性对应 URL 的不同部分:

| 属性 | 描述 | 示例(假设当前 URL 为 `https://example.com:8080/path/page.html?q=search#section1`) | |------|------|--------------------------------------------------------------------------------| | `href` | 完整的 URL | `"https://example.com:8080/path/page.html?q=search#section1"` | | `protocol` | URL 的协议(包括 `:`) | `"https:"` | | `host` | 主机名和端口号 | `"example.com:8080"` | | `hostname` | 主机名(不带端口) | `"example.com"` | | `port` | 端口号 | `"8080"` | | `pathname` | URL 的路径部分 | `"/path/page.html"` | | `search` | 查询字符串(以 `?` 开头) | `"?q=search"` | | `hash` | 片段标识符(以 `#` 开头) | `"#section1"` | | `origin` | URL 的协议、主机名和端口 | `"https://example.com:8080"` |

      1. 示例:读取 Location 属性

```javascript console.log("完整 URL:", window.location.href); console.log("协议:", window.location.protocol); console.log("主机名:", window.location.hostname); console.log("路径:", window.location.pathname); console.log("查询参数:", window.location.search); console.log("哈希:", window.location.hash); ```

    • 输出示例:**

``` 完整 URL: https://example.com:8080/path/page.html?q=search#section1 协议: https: 主机名: example.com 路径: /path/page.html 查询参数: ?q=search 哈希: #section1 ```

    1. Location 对象的方法

Location 对象提供了几个方法来控制页面的导航行为:

| 方法 | 描述 | |------|------| | `assign(url)` | 加载新页面,并在浏览器历史记录中创建新条目 | | `replace(url)` | 替换当前页面(不会在历史记录中创建新条目) | | `reload()` | 重新加载当前页面(可强制从服务器重新加载) |

      1. 示例:使用 `assign()` 和 `replace()`

```javascript // 导航到新页面(保留历史记录) window.location.assign("https://example.com/newpage");

// 替换当前页面(不保留历史记录) window.location.replace("https://example.com/anotherpage");

// 重新加载当前页面(可能从缓存加载) window.location.reload();

// 强制从服务器重新加载 window.location.reload(true); ```

    1. 修改 Location 属性

直接修改 `location.href` 或 `location` 本身会触发页面跳转,类似于 `assign()`:

```javascript // 以下两种方式等效,都会跳转到新页面 window.location.href = "https://example.com/newpage"; window.location = "https://example.com/newpage"; ```

修改其他属性(如 `hash` 或 `search`)也会更新 URL,但不会重新加载页面(除非修改 `href`、`pathname` 或 `host` 等关键部分):

```javascript // 仅修改哈希部分(不会重新加载页面) window.location.hash = "#newsection";

// 修改查询参数(会触发页面重新加载) window.location.search = "?newquery=value"; ```

    1. 实际应用场景
      1. 1. 动态修改 URL 哈希(单页应用)

在单页应用(SPA)中,`location.hash` 常用于实现无刷新页面导航:

```javascript // 监听哈希变化 window.addEventListener("hashchange", function() {

   console.log("哈希已更改为:", window.location.hash);

});

// 修改哈希(不会重新加载页面) window.location.hash = "#profile"; ```

      1. 2. 解析查询参数

可以使用 `location.search` 获取查询字符串,并进一步解析:

```javascript // 假设当前 URL 是 https://example.com?name=John&age=30 function getQueryParams() {

   const params = new URLSearchParams(window.location.search);
   return {
       name: params.get("name"), // "John"
       age: params.get("age")   // "30"
   };

}

console.log(getQueryParams()); ```

      1. 3. 强制页面重新加载

在某些情况下,可能需要强制刷新页面(如用户执行重要操作后):

```javascript function refreshPage() {

   window.location.reload(true); // 强制从服务器加载

} ```

    1. 总结

- **Location 对象** 提供了访问和操作当前页面 URL 的能力。 - 可以通过 `location.href`、`location.pathname` 等属性读取或修改 URL 的不同部分。 - 使用 `assign()`、`replace()` 和 `reload()` 方法控制页面导航行为。 - 修改 `hash` 不会导致页面重新加载,适用于单页应用的路由管理。 - 查询字符串可通过 `URLSearchParams` 解析。

Location 对象是前端开发中处理 URL 和导航的核心工具,合理使用可以优化用户体验并实现动态页面控制。