📅  最后修改于: 2023-12-03 14:43:18.681000             🧑  作者: Mango
当你想要获取当前页面的原始 URL 时,你可以使用 window.location.href
,它返回当前页面的完整 URL。但是,有时你只需要 URL 的一部分,比如你可能需要获取 URL 的主机名、端口、路径或查询参数。在这种情况下,jQuery 提供了一些方法来帮助你解析 URL。
如果你要获取 URL 的主机名,可以使用 window.location.hostname
,它返回当前页面的主机名。
var hostname = window.location.hostname;
console.log("主机名:" + hostname);
如果你要获取 URL 的端口号,可以使用 window.location.port
,它返回当前页面的端口号。如果 URL 中不包含端口号,则返回默认端口号(80 或 443)。
var port = window.location.port;
console.log("端口号:" + port);
如果你要获取 URL 的路径,可以使用 window.location.pathname
,它返回当前页面的路径(不包括主机名和端口号)。
var pathname = window.location.pathname;
console.log("路径:" + pathname);
如果你要获取 URL 的查询参数,可以使用 window.location.search
,它返回当前页面的查询参数(包括问号)。但是,它返回的查询参数是一个字符串,需要进一步解析。
var search = window.location.search;
console.log("查询参数:" + search);
如果你需要将查询参数解析成对象,你可以使用下面的函数:
function parseQueryString(queryString) {
var params = {};
var queries, i, pair, query, key, value;
// 按照 & 分割查询参数
queries = queryString.split("&");
// 将每个查询参数分割成键值对,并放入 params 对象中
for (i = 0; i < queries.length; i++) {
query = queries[i];
pair = query.split("=");
key = decodeURIComponent(pair[0]);
value = decodeURIComponent(pair[1]);
// 如果该键已存在,则将该键对应的值转换为数组形式,以便存储多个值
if (typeof params[key] === "undefined") {
params[key] = value;
} else {
if (Array.isArray(params[key])) {
params[key].push(value);
} else {
params[key] = [params[key], value];
}
}
}
return params;
}
var search = window.location.search;
var params = parseQueryString(search);
console.log(params);
以上代码将查询参数解析成一个对象,并将重复的键值对存储为数组形式。
如果你要获取 URL 的哈希值(包括 # 符号),可以使用 window.location.hash
,它返回当前页面的哈希值。
var hash = window.location.hash;
console.log("哈希值:" + hash);
以上是使用 jQuery 获取原始 URL 的方法。无论你需要获取 URL 的哪个部分,jQuery 都提供了相应的方法,使你能够轻松地访问 URL 的各个部分。