使用 JavaScript 获取当前 URL

使用 JavaScript 获取当前 URL

技术背景

在前端开发中,有时需要获取当前页面的 URL 信息,例如在进行页面跳转、数据请求、页面分析等操作时。JavaScript 提供了多种方法来获取当前 URL 及其各个组成部分。

实现步骤

1. 获取完整的当前 URL

可以使用 window.location.hrefdocument.URL 来获取完整的当前 URL。

// 使用 window.location.href
const fullUrl1 = window.location.href;
console.log(fullUrl1);

// 使用 document.URL
const fullUrl2 = document.URL;
console.log(fullUrl2);

2. 获取 URL 的各个组成部分

JavaScript 的 Location 对象提供了多个属性来获取 URL 的各个部分。

const currentLocation = window.location;

// 协议
const protocol = currentLocation.protocol; 
// 主机名和端口
const host = currentLocation.host; 
// 主机名
const hostname = currentLocation.hostname; 
// 端口号
const port = currentLocation.port; 
// 路径名
const pathname = currentLocation.pathname; 
// 查询字符串
const search = currentLocation.search; 
// 锚点
const hash = currentLocation.hash; 
// 源
const origin = currentLocation.origin; 

console.log('协议:', protocol);
console.log('主机名和端口:', host);
console.log('主机名:', hostname);
console.log('端口号:', port);
console.log('路径名:', pathname);
console.log('查询字符串:', search);
console.log('锚点:', hash);
console.log('源:', origin);

3. 使用 URL 对象解析 URL

URL 对象可以方便地解析和操作 URL。

const url = new URL(window.location.href);

// 获取查询参数
const name = url.searchParams.get('name');
const age = url.searchParams.get('age');

console.log('name 参数:', name);
console.log('age 参数:', age);

核心代码

获取完整 URL

const fullUrl = window.location.href;

获取 URL 各部分

const currentLocation = window.location;
const protocol = currentLocation.protocol;
const host = currentLocation.host;
const hostname = currentLocation.hostname;
const port = currentLocation.port;
const pathname = currentLocation.pathname;
const search = currentLocation.search;
const hash = currentLocation.hash;
const origin = currentLocation.origin;

使用 URL 对象解析查询参数

const url = new URL(window.location.href);
const paramValue = url.searchParams.get('paramName');

最佳实践

  • 优先使用 window.location.href:虽然 document.URL 也能获取完整 URL,但在某些特殊情况下(如存在名为 URL 的框架、图像或表单)可能会出现问题,因此建议优先使用 window.location.href
  • 使用 URL 对象处理查询参数:当需要处理 URL 中的查询参数时,使用 URL 对象的 searchParams 属性可以更方便地获取和操作参数。

常见问题

1. document.URLwindow.location.href 有什么区别?

一般情况下,它们返回的值是相同的。但在某些特殊情况下,如存在名为 URL 的框架、图像或表单时,document.URL 可能会被覆盖,导致代码出错,而 window.location.href 则不会受此影响。

2. window.locationdocument.location 有什么关系?

在现代浏览器中,document.location 会被映射到 window.location。但最初 document.location 只返回当前 URL 字符串,为避免混淆,后来引入了 document.URL。为了跨浏览器兼容性,建议使用 window.location

3. 如何判断 URL 中是否包含某个查询参数?

可以使用 URL 对象的 searchParams.has() 方法来判断。

const url = new URL(window.location.href);
const hasParam = url.searchParams.has('paramName');
console.log('是否包含 paramName 参数:', hasParam);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

1010n111

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值