2026-03-10 01:59:38
location对象是浏览器提供的全局接口,用于获取和操作当前页面URL信息,它既是URL的“代言人”也是“遥控器”,能精准控制页面导航与地址调整。
一、location对象的作用location对象通过以下属性获取或设置URL的不同部分:
location.href返回或设置完整URL字符串。例如:
console.log(location.href); // 输出当前完整URLlocation.href = 'location.protocol获取协议部分(如http:、https:)。例如:
console.log(location.protocol); // 输出 "https:"location.host返回主机名和端口号(如
location.hostname仅返回主机名(如
location.port返回URL中显式指定的端口号。若未指定,返回空字符串。
location.pathname返回域名后的路径部分(如/path/to/page.html)。例如:
console.log(location.pathname); // 输出 "/path/to/page.html"location.search返回查询字符串(以?开头,如?name=john&age=30)。需结合URLSearchParams解析参数:
const params = new URLSearchParams(location.search);console.log(params.get('name')); // 输出 "john"location.hash返回哈希值(以#开头,如#section1)。常用于页面内导航或SPA路由:
location.hash = 'contact'; // URL变为location.origin返回协议、主机名和端口号(只读,如
location对象提供以下方法控制页面行为:
location.assign(url)加载新文档并记录到历史记录,用户可通过“后退”按钮返回。例如:
location.assign('location.replace(url)加载新文档并替换当前历史记录,用户无法后退。适用于登录后跳转:
location.replace('location.reload(forceGet)重新加载当前页面。若forceGet为true,强制从服务器获取最新内容:
location.reload(); // 从缓存或服务器重新加载location.reload(true); // 强制从服务器重新加载页面跳转与历史管理
允许用户返回:用assign()(如商品详情页跳转)。
防止用户后退:用replace()(如登录后跳转)。
动态更新URL参数结合URLSearchParams解析和修改查询参数:
const params = new URLSearchParams(location.search);params.set('page', '2');location.search = params.toString(); // 更新URL参数页面内导航与SPA路由通过修改hash实现无刷新导航:
// 点击目录跳转到对应章节document.getElementById('section-link').addEventListener('click', () => { location.hash = 'chapter-2'; // URL变为强制刷新数据用户点击按钮时重新加载页面或强制从服务器获取:
document.getElementById('refresh-btn').addEventListener('click', () => { location.reload(true); // 强制刷新});对于复杂URL操作(如构建新URL或解析编码),推荐使用URL接口:
const url = new URL('总结:location对象通过结构化属性和方法简化了URL操作,适用于日常导航、参数传递和页面刷新。对于复杂场景,可结合URLSearchParams或URL接口实现更灵活的控制。