跳转到内容
主菜单
主菜单
移至侧栏
隐藏
导航
首页
最近更改
随机页面
MediaWiki帮助
代码酷
搜索
搜索
中文(中国大陆)
外观
创建账号
登录
个人工具
创建账号
登录
未登录编辑者的页面
了解详情
贡献
讨论
编辑“︁
Newquery
”︁
页面
讨论
大陆简体
阅读
编辑
编辑源代码
查看历史
工具
工具
移至侧栏
隐藏
操作
阅读
编辑
编辑源代码
查看历史
常规
链入页面
相关更改
特殊页面
页面信息
外观
移至侧栏
隐藏
您的更改会在有权核准的用户核准后向读者展示。
警告:
您没有登录。如果您进行任何编辑,您的IP地址会公开展示。如果您
登录
或
创建账号
,您的编辑会以您的用户名署名,此外还有其他益处。
反垃圾检查。
不要
加入这个!
# JavaScript Location 对象 **Location** 对象是 JavaScript **BOM(Browser Object Model)** 的一部分,它提供了当前窗口(或框架)加载的文档的 URL 信息,并允许开发者读取和修改 URL 的不同部分(如协议、主机名、路径、查询参数等)。此外,它还提供了一些方法用于页面导航,如重新加载页面或跳转到新 URL。 ## 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"` | ### 示例:读取 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 ``` ## Location 对象的方法 Location 对象提供了几个方法来控制页面的导航行为: | 方法 | 描述 | |------|------| | `assign(url)` | 加载新页面,并在浏览器历史记录中创建新条目 | | `replace(url)` | 替换当前页面(不会在历史记录中创建新条目) | | `reload()` | 重新加载当前页面(可强制从服务器重新加载) | ### 示例:使用 `assign()` 和 `replace()` ```javascript // 导航到新页面(保留历史记录) window.location.assign("https://example.com/newpage"); // 替换当前页面(不保留历史记录) window.location.replace("https://example.com/anotherpage"); // 重新加载当前页面(可能从缓存加载) window.location.reload(); // 强制从服务器重新加载 window.location.reload(true); ``` ## 修改 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. 动态修改 URL 哈希(单页应用) 在单页应用(SPA)中,`location.hash` 常用于实现无刷新页面导航: ```javascript // 监听哈希变化 window.addEventListener("hashchange", function() { console.log("哈希已更改为:", window.location.hash); }); // 修改哈希(不会重新加载页面) window.location.hash = "#profile"; ``` ### 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()); ``` ### 3. 强制页面重新加载 在某些情况下,可能需要强制刷新页面(如用户执行重要操作后): ```javascript function refreshPage() { window.location.reload(true); // 强制从服务器加载 } ``` ## 总结 - **Location 对象** 提供了访问和操作当前页面 URL 的能力。 - 可以通过 `location.href`、`location.pathname` 等属性读取或修改 URL 的不同部分。 - 使用 `assign()`、`replace()` 和 `reload()` 方法控制页面导航行为。 - 修改 `hash` 不会导致页面重新加载,适用于单页应用的路由管理。 - 查询字符串可通过 `URLSearchParams` 解析。 Location 对象是前端开发中处理 URL 和导航的核心工具,合理使用可以优化用户体验并实现动态页面控制。 [[Category:编程语言]] [[Category:JavaScript]] [[Category:Javascript BOM]]
摘要:
请注意,所有对代码酷的贡献均被视为依照知识共享署名-非商业性使用-相同方式共享发表(详情请见
代码酷:著作权
)。如果您不希望您的文字作品被随意编辑和分发传播,请不要在此提交。
您同时也向我们承诺,您提交的内容为您自己所创作,或是复制自公共领域或类似自由来源。
未经许可,请勿提交受著作权保护的作品!
取消
编辑帮助
(在新窗口中打开)