小程序 web-view跳转h5页面方法 (包含Query参数丢失解决办法)

本文介绍如何在微信小程序中使用<web-view>组件加载H5页面,并解决因Query参数被忽略的问题。通过 encodeURIComponent 和 decodeURIComponent 进行URL编码解码,确保正确传递H5地址参数。

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

1. <web-view>

小程序跳转h5页面,需要官方提供的承载网页的容器,即<web-view>,自动铺满整个小程序的页面。

官方传送地址:https://developers.weixin.qq.com/miniprogram/dev/component/web-view.html

使用方法:
在项目中建立一个承载h5页面的 .vue 的文件,以【/pages/h5/index】:

<template>
  <view>
    <web-view
      :src="url"
    />
  </view>
</template>
<script>
  export default {
    data() {
      return {
        url: '', // h5的地址
      };
    },
    onLoad(options) {
      let url = options.url;
      this.url = decodeURIComponent(url);
    },
  };
</script>
<style lang="scss" scoped>

</style>

需要跳转h5页面的小程序中某个.vue文件

// 点击跳转h5的按钮
goH5Page(){ 
  uni.navigateTo({ url: `/pages/h5/index?url=${encodeURIComponent(this.h5Url)}` }); // 这里地址里的Query参数url指的是即将跳转的h5的地址
},

2.这里需要注意的是:

小程序跳转h5页面时,h5地址后面如果有Query参数时,会被自动忽略,只会取地址中的域名的那部分。
例:https://www.csdn.net/?spm=xxxxx 只会取到:https://www.csdn.net/
后面的spm参数会被忽略。。。

△ 解决:
使用encodeURIComponentdecodeURIComponent
对 URL 地址进行编码和解码

### 实现 UniApp 小程序携带参数跳转 H5 页面UniApp 开发环境中,为了实现在小程序中携带参数跳转H5 页面的功能,开发者通常会利用 `webview` 组件以及 URL 的查询字符串来完成这一操作。下面详细介绍具体的实现过程。 #### 使用 WebView 组件加载外部网页 当需要从小程序内部打开一个特定的 H5 页面时,可以采用内置的 `<web-view>` 标签[^4]: ```html <template> <view> <!-- web-view组件用于展示H5页面 --> <web-view :src="url"></web-view> </view> </template> <script> export default { data() { return { url: '' } }, onLoad(options) { // 接收上一页传来的参数 this.url = 'https://example.com/page?' + Object.keys(options).map(key => key + '=' + options[key]).join('&'); } } </script> ``` 上述代码展示了如何通过接收来自其他页面传递过来的数据,并将其作为查询参数附加到目标网站地址后面形成完整的URL路径。 #### 构建带有参数的目标链接 对于想要向 H5 页面发送的信息,应该先构建好相应的请求串再赋值给 src 属性。假设有一个名为 user_id 和 name 的两个变量,则可以在 JavaScript 中这样处理: ```javascript // 定义要传输的数据对象 const params = { user_id: '123', name: encodeURIComponent('张三') // 对特殊字符编码以确保安全性和兼容性 }; // 创建查询字符串 let queryString = ''; for (let key in params){ if(queryString !== ''){ queryString += '&'; } queryString += `${key}=${params[key]}` } this.url = `http://yourdomain.com/targetPage?${queryString}`; ``` 这段脚本创建了一个包含所需信息的 URL 字符串,并最终被赋予给了 `web-view` 的源属性。 #### 处理接收到的参数H5 页面端 一旦成功导航到了指定位置,在对应的 HTML 文件里就可以解析这些额外附带的内容了。这里给出一段简单的 jQuery 示例说明怎样提取 GET 请求中的键值对: ```javascript function getQueryVariable(variable) { var query = window.location.search.substring(1); var vars = query.split("&"); for (var i=0;i<vars.length;i++) { var pair = vars[i].split("="); if(pair[0] === variable){return pair[1];} } return(false); } console.log(getQueryVariable("user_id")); // 输出:123 console.log(decodeURIComponent(getQueryVariable("name"))); // 解码后输出:张三 ``` 此函数能够帮助快速定位并读取任何已知名称的查询项,从而方便后续逻辑运算或界面渲染工作。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值