H5客户端获取Url参数的方法

本文深入探讨了前端开发中常见的URL操作技巧,包括如何使用window.location.href获取完整URL,利用this.$route.path和this.$route.fullPath获取路径信息,以及通过this.$route.query和this.$route.params获取URL参数。同时,文章还对比了this.$router和this.$route在路由操作上的不同之处。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一,window.location.href: 获取完整的url链接
二,this.$ route.path:前端路由中配置的path
三,this.$ route.fullPath:当前页面除去协议,域名后的完整链接
四,以对象的形式获取当前Url链接?后面拼接的参数,有以下两种方法:
1,this.$route.query
2,以函数的形式,函数参数可以不传:

function GetRequest(str) {
    var url = str ? str : decodeURI(location.search); //获取url中"?"符后的字串
    var theRequest = new Object();
    if (url.indexOf('?') != -1) {
        url = url.substr(1);
    }
    if (url) {
        var strs = url.split('&');
        for (var i = 0; i < strs.length; i++) {
            var srtArry = strs[i].split('=');
            var y = srtArry.shift();
            theRequest[y] = unescape(srtArry.join('='));
        }
    }
    return theRequest;
}

五,获取从上个页面传递过来的参数,有以下两种方法:
1,this.$ route.query
A.vue

this.$router.push({
    path: '/B',    // B完整的path
    query: {
        number: '111111111111111',
        cityNo: '21',
        latitude: '31.24',
        longitude: '121.67',
        type: 'sssss'
    }
});

B.vue
用this.$ route.query就可以获取A.vue中传递过来的参数,并且当前页面会显示带参数的完整的Url,刷新页面后参数依然存在
2,this.$ route.params:
A.vue

this.$router.push({
    name: 'B',
    params: {
        number: '111111111111111',
        cityNo: '21',
        latitude: '31.24',
        longitude: '121.67',
        type: 'sssss'
    }
});

B.vue
用this.$route.params就可以获取A.vue中传递过来的参数,但是当前页面的Url不会显示拼接的参数,并且刷新页面后参数不会存在

最后,大家有没有注意到在A.vue和B.vue中用到的分别是this.$ router和this.$ route,两者之家有什么区别呢?
this.$ router是全局路由对象,每个页面都可以调用push, go等方法
this.$route表示当前正在跳转的路由对象,可以调用其path, name, query, params等属性

### 在 Uni-app 中获取 URL 参数 #### 使用 `onLoad` 方法处理页面加载时的参数 当组件首次加载时,可以通过 `onLoad` 生命周期函数接收并解析传入的选项参数。此方式适用于原生应用和部分平台的小程序环境。 ```javascript export default { onLoad(options) { // 将接收到的参数赋值给data属性 this.type = options.type; } } ``` 这种方法简单直接,在大多数情况下能够满足需求[^1]。 #### 针对 H5 平台提取 URL 查询字符串 对于基于浏览器端的应用场景,则需手动解析当前窗口位置 (`window.location`) 的查询部分来获得所需数据: ```javascript function getUrlParams() { const url = window.location.search; const paramsObj = {}; if (url.includes('?')) { const queryString = url.substring(url.indexOf('?') + 1); const pairs = queryString.split('&'); for (let pair of pairs) { const [key, value] = pair.split('=').map(decodeURIComponent); paramsObj[key] = value || ''; } } return paramsObj; } console.log(getUrlParams()); ``` 上述代码片段展示了如何安全地读取并转换 URL 中编码后的键值对为 JavaScript 对象形式[^2]。 #### 统一不同运行环境下访问 URL 参数的方式 考虑到跨平台特性,可以采用条件编译指令实现更通用的做法,从而兼容更多类型的终端设备和服务端渲染等情况: ```javascript methods: { getIdFromQuery() { let id; // 判断是否处于H5环境中 #ifdef H5 id = this.$route.query.id; #endif // 微信小程序环境下的处理逻辑 #ifdef MP-WEIXIN const pages = getCurrentPages(); const currentPageInfo = pages[pages.length - 1]; id = currentPageInfo.options && currentPageInfo.options.id; #endif return id; }, }, mounted(){ console.log(this.getIdFromQuery()); } ``` 这段代码利用了框架内置宏定义(`#ifdef`)来进行分支判断,并针对特定平台执行相应的操作以适应不同的开发模式和技术栈差异[^4].
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值