在 UniApp 中获取当前页面地址
在 UniApp 中获取当前页面地址,可以通过以下步骤实现:
方法说明:
-
获取当前页面实例:使用
getCurrentPages()
获取页面栈数组,最后一个元素即为当前页面实例。 -
提取页面路径和参数:从页面实例的
route
属性获取路径,options
属性获取参数。 -
拼接完整地址:将路径和参数组合成完整 URL。
function getCurrentUrl() {// 获取页面栈const pages = getCurrentPages();if (pages.length === 0) return;// 当前页面实例const currentPage = pages[pages.length - 1];// 页面路径(补全前缀)const path = `/${currentPage.route}`;// 处理参数(编码特殊字符)const queryParams = currentPage.options || {};const queryString = Object.keys(queryParams).map(key => `${encodeURIComponent(key)}=${encodeURIComponent(queryParams[key])}`).join('&');// 完整地址const fullUrl = queryString ? `${path}?${queryString}` : path;console.log('当前页面地址:', fullUrl); // 输出如:/pages/index/index?id=123
}
注意事项:
-
平台差异:H5 端路径可能包含协议和域名,但建议使用上述跨平台方法。
-
生命周期限制:在
App.onLaunch
等过早时机调用可能导致页面栈未生成。 -
参数编码:使用
encodeURIComponent
处理特殊字符,确保 URL 合法性。
扩展场景:
-
H5 端获取完整 URL:若需包含协议和域名(仅 H5 有效):
// 仅适用于 H5 环境
const fullH5Url = window.location.href;
通过上述方法,可跨平台获取当前页面的路径及参数,适用于需要动态处理页面地址的场景。