URL(统一资源定位符)是用于标识互联网上资源位置的字符串。在JavaScript中,可以通过window.location
对象或URL
接口来操作URL。
原生JavaScript方法:
// 获取完整URL
const fullUrl = window.location.href;
// 获取协议部分
const protocol = window.location.protocol; // "http:" 或 "https:"
// 获取主机名和端口
const host = window.location.host; // "example.com:8080"
// 获取主机名
const hostname = window.location.hostname; // "example.com"
// 获取端口号
const port = window.location.port; // "8080"
// 获取路径部分
const pathname = window.location.pathname; // "/path/to/resource"
// 获取查询字符串
const search = window.location.search; // "?key=value&name=test"
// 获取哈希值
const hash = window.location.hash; // "#section1"
jQuery方法: jQuery没有直接提供URL操作方法,但可以结合原生JavaScript使用:
$(document).ready(function() {
const currentUrl = $(location).attr('href');
console.log(currentUrl);
});
原生JavaScript方法:
// 重定向到新URL
window.location.href = 'https://example.com/new-page';
// 修改哈希值(不刷新页面)
window.location.hash = 'new-section';
// 修改查询字符串(会刷新页面)
window.location.search = '?newParam=value';
// 替换当前URL(不记录到历史记录)
window.location.replace('https://example.com/new-page');
原生JavaScript方法:
function getQueryParams() {
const search = window.location.search.substring(1);
return JSON.parse('{"' + decodeURIComponent(search)
.replace(/"/g, '\\"')
.replace(/&/g, '","')
.replace(/=/g, '":"') + '"}');
}
// 使用示例
const params = getQueryParams();
console.log(params.key); // 获取key参数的值
更现代的URLSearchParams API:
const params = new URLSearchParams(window.location.search);
console.log(params.get('key')); // 获取key参数的值
params.set('newKey', 'newValue'); // 设置新参数
console.log(params.toString()); // 转换为查询字符串
使用URL对象:
const url = new URL('https://example.com/path');
url.searchParams.set('key', 'value');
console.log(url.toString()); // "https://example.com/path?key=value"
pushState
修改URL不会触发页面刷新,但会添加历史记录;replaceState
则替换当前历史记录。// 获取并处理URL参数
function processURL() {
// 获取当前URL
const currentUrl = new URL(window.location.href);
// 获取所有查询参数
const params = currentUrl.searchParams;
// 添加新参数
params.set('timestamp', Date.now());
// 更新URL不刷新页面
window.history.pushState({}, '', currentUrl.toString());
// 输出处理后的URL
console.log('Processed URL:', currentUrl.toString());
// 返回参数对象
return Object.fromEntries(params.entries());
}
// 调用示例
$(document).ready(function() {
const urlParams = processURL();
console.log('URL Parameters:', urlParams);
});
通过以上方法,您可以灵活地在JavaScript和jQuery中操作URL,实现各种前端路由、参数传递和页面导航功能。
没有搜到相关的文章