window.location 是浏览器 bom 中核心对象,提供 url 解析(如 href、protocol、host 等属性)和跳转(href 赋值、assign、replace)能力,并支持通过 urlsearchparams 处理查询参数,需注意安全跳转与路径合法性校验。

window.location 是浏览器 BOM(Browser Object Model)中最重要的对象之一,它提供了对当前页面 URL 的读取、解析和跳转能力。它既是一个属性(window.location),也是一个对象,包含多个实用属性和方法,是前端开发中处理 URL 的核心接口。
URL 解析:获取当前地址的各部分信息
window.location 将当前 URL 自动拆解为多个只读属性,便于快速提取协议、域名、路径等结构化信息:
- location.href:完整 URL 字符串(可读可写,赋值会触发跳转)
-
location.protocol:协议名,如
"https:"(注意末尾冒号) -
location.host:主机名 + 端口号(如
"example.com:8080") -
location.hostname:纯主机名(如
"example.com") - location.port:端口号(默认端口如 80/443 通常为空字符串)
-
location.pathname:路径部分(如
"/user/profile") -
location.search:查询参数(即
"?"开始的部分,如"?id=123&type=edit") -
location.hash:片段标识符(即
"#"开始的部分,如"#section2")
URL 跳转:改变页面地址的三种方式
通过修改 location 相关属性或调用方法,可实现不同行为的页面导航:
-
直接赋值 href:
window.location.href = "https://example.com"—— 触发完整页面加载,可前进/后退 -
使用 assign():
window.location.assign("https://example.com")—— 效果同上,语义更明确 -
使用 replace():
window.location.replace("https://example.com")—— 替换当前历史记录,无法回退到原页
注意:replace() 常用于登录跳转、错误页重定向等不希望用户返回的场景。
查询参数处理:search 属性与 URLSearchParams 配合使用
location.search 返回带 ? 的原始字符串,建议用 URLSearchParams 解析和构造参数:
- 获取参数:
const params = new URLSearchParams(location.search); console.log(params.get("id")); - 遍历所有参数:
for (const [key, value] of params) { ... } - 生成新查询字符串:
params.set("page", "2"); const newSearch = params.toString(); - 拼接跳转:
window.location.href = location.origin + location.pathname + "?" + newSearch;
安全跳转与相对路径注意事项
直接拼接字符串跳转易出错,需注意以下细节:
- 使用
location.origin获取协议+主机+端口,避免硬编码(如https://site.com) - 相对路径跳转(如
"./about.html"或"../admin/")由浏览器自动补全为绝对 URL,但逻辑依赖当前路径结构 - 跳转前建议校验 URL 合法性,尤其在用户输入或后端传参场景下,防止 open redirect 漏洞
- 单页应用(SPA)中常拦截链接点击,手动更新 URL 并渲染视图,此时多配合
history.pushState()或路由库,而非直接改location.href
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











