vue 获取页面路径中的参数(h5)

博客主要讲述要制作一个用于打开app的h5页面,当前任务是获取url携带的参数,涉及前端开发相关内容。

今天要做一个h5页面,用来打开app的,现在要获取url带的参数

created() {
	const queryUrl = this.getRequest()
	let urlParams = Object.assign(queryUrl, this.$route.query) //参数合并
	if (urlParams.id) {//id是路径带的参数
		console.log('urlParams ==>', queryUrl.id)
		this.id = queryUrl.id
	};
	this.downApp();
},
methods: {
	getRequest() {
		var url = decodeURIComponent(location.search);
		var theRequest = new Object();
		if (url.indexOf("?") != -1) {
			var str = url.substr(1);
			var strs = str.split("&");
			for (var i = 0; i < strs.length; i++) {
				theRequest[strs[i].split("=")[0]] = unescape(strs[i].split("=")[1]);
			}
		}
		return theRequest;
	},
}
H5 页面获取 URL 中的路由参数,可以通过多种方式实现,具体取决于项目的框架和需求。以下是一些常用的方法: ### 使用 `window.location` 相关属性 通过 `window.location.href` 或 `window.location.search` 可以直接获取当前页面完整的 URL 地址或仅包含查询参数的部分。例如: ```javascript let urlParams = new URLSearchParams(window.location.search); let id = urlParams.get('id'); // 获取URL中名为 "id" 的参数值 console.log(id); ``` 此方法适用于原生 JavaScript 实现,并且不需要依赖任何框架。 ### 使用自定义函数解析 URL 参数 如果项目不使用现代浏览器支持的 `URLSearchParams` API,则可以手动编写函数来解析参数。例如: ```javascript function getUrlParams(url) { let params = {}; let search = url ? url.split('?')[1] : window.location.search.slice(1); if (search) { let pairs = search.split('&'); for (let i = 0; i < pairs.length; i++) { let [key, value] = pairs[i].split('='); params[key] = decodeURIComponent(value.replace(/\+/g, ' ')); } } return params; } let params = getUrlParams(); console.log(params.id); // 获取名为 "id" 的参数值 ``` ### 结合 Vue 路由(Vue Router) 如果项目基于 Vue 并使用了 Vue Router,则可以通过 `$route` 对象访问 URL 中的参数: - **前端路由配置中的路径**:`this.$route.path` 可以获取到当前页面路径。 - **完整路径**:`this.$route.fullPath` 返回当前页面除去协议和域名后的完整链接。 - **查询参数对象**:`this.$route.query` 提供一个包含所有查询参数的对象形式表示。 示例代码如下: ```javascript export default { mounted() { console.log(this.$route.query.id); // 获取 URL 中的 id 参数 } } ``` ### 在 uni-app 框架中获取 URL 参数 对于 uni-app 项目,可以在页面的生命周期钩子(如 `onShow()`)中通过 `getCurrentPages()` 方法获取当前页面的路由信息,并结合 `location.href` 解析 URL 中的参数[^4]: ```javascript onShow() { // #ifdef H5 this.getRouterkey() // #endif }, methods: { getRouterkey() { let routes = getCurrentPages(); let currentPage = routes[routes.length - 1].route; console.log(currentPage); // 当前页面路由URL }, getRequestParams() { let url = location.href; let requestParams = {}; if (url.indexOf('?') !== -1) { let str = url.substr(url.indexOf('?') + 1); let strs = str.split('&'); for (let i = 0; i < strs.length; i++) { requestParams[strs[i].split('=')[0]] = decodeURI(strs[i].split('=')[1]); } } return requestParams; } } ``` ### 注意事项 - 确保在正确的环境条件下编译特定于 H5 的代码段。 - 在处理 URL 编码,使用 `decodeURI()` 或 `decodeURIComponent()` 来正确解码特殊字符。 - 如果需要验证某些参数是否存在,可以添加额外的逻辑检查参数是否存在于返回的对象中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值