原生h5页面获取链接的query参数

该代码定义了一个名为GetQueryString的JavaScript函数,用于从URL中提取指定名称的查询参数。它使用正则表达式匹配查询字符串,找到参数值并使用unescape进行解码。调用示例是获取名为backUrl的参数。

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

    function GetQueryString(name) {
        var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
        var r = window.location.search.substr(1).match(reg);
        if (r != null) {
            return unescape(r[2]);
        }
        return null;
    }
GetQueryString("backUrl")
<think>嗯,用户想在UniApp中通过href跳转页面获取URL参数。首先,我得考虑UniApp的不同平台,比如H5、小程序和App,因为它们的实现方式可能不同。 对于H5平台,使用window.location.href跳转的话,参数会附在URL后面。这时候可以用JavaScript的URLSearchParams来解析参数,或者用正则表达式提取。比如在目标页面,通过window.location.search获取查询字符串,再进行处理。不过要注意H5环境下的条件编译,用// #ifdef H5包裹代码,避免其他平台报错。 如果是小程序平台,不能直接用href跳转,得用uni.navigateTo之类的API。参数需要通过events传递,然后在目标页面的onLoad生命周期里用options接收。比如跳转时在url后面加参数,目标页面用options.参数获取App平台的话,可能需要用plus.runtime.openURL,但这样会跳转到外部浏览器,参数处理方式和H5类似。不过如果是内部页面跳转,还是用uni.navigateTo,参数传递方法和小程序一样。 用户可能遇到的问题包括不同平台的兼容性,比如H5和其他平台代码混用导致错误,这时候条件编译就很重要。另外,参数传递的方式是否正确,比如在url里拼接参数,或者使用events对象。 还需要考虑特殊字符的问题,比如用encodeURIComponent对参数进行编码,避免解析错误。同时,目标页面如何正确解析参数,可能需要不同的方法,比如URLSearchParams或手动分割字符串。 总结下来,步骤应该是先区分平台,选择合适的跳转方法,然后在目标页面根据平台使用对应的获取参数方式,注意条件编译和参数编码。这样用户就能在UniApp中实现href跳转获取参数了。</think>在 UniApp 中实现 href 跳转获取 URL 参数的方法需要区分不同平台(H5/小程序/App),以下是具体实现步骤: ### 一、H5 平台实现 1. **跳转方式** 使用标准 Web 方式跳转: ```javascript window.location.href = 'https://yourdomain.com/page?param1=value1¶m2=value2'; ``` 2. **参数获取** 在目标页面通过以下方式解析 URL: ```javascript // #ifdef H5 const getUrlParams = () => { const search = window.location.search; return new URLSearchParams(search); }; const param1 = getUrlParams().get('param1'); // 输出 value1[^3] // #endif ``` ### 二、小程序/App 平台实现 1. **跳转方式** 使用 UniApp 原生导航 API: ```javascript uni.navigateTo({ url: '/pages/targetPage?param1=value1¶m2=' + encodeURIComponent(value2) }); ``` 2. **参数获取** 在目标页面的 `onLoad` 生命周期获取: ```javascript onLoad(options) { console.log(options.param1); // 输出 value1 console.log(decodeURIComponent(options.param2)); // 解码特殊字符 } ``` ### 三、跨平台兼容方案 ```javascript // 跳转封装函数 function navigateWithParams(url, params) { // #ifdef H5 const query = new URLSearchParams(params).toString(); window.location.href = `${url}?${query}`; // #endif // #ifndef H5 const queryStr = Object.keys(params).map(key => `${key}=${encodeURIComponent(params[key])}` ).join('&'); uni.navigateTo({ url: `${url}?${queryStr}` }); // #endif } ``` ### 四、注意事项 1. **编码规范** 必须使用 `encodeURIComponent()` 处理含特殊符号的参数值(如 `&`, `=` 等)[^2] 2. **条件编译** 使用 `// #ifdef H5` 和 `// #endif` 包裹 H5 特有代码,避免在小程序/App 平台报错[^3] 3. **参数长度限制** 小程序平台 URL 参数最大长度限制为 1024KB,超长数据建议使用全局变量存储
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值