H5跳转到微信小程序

🌸 Date: 2021-6-8

👋 2021-6-9 补充app跳转微信小程序,注意点

🌸 2021-6-15 简单补充微信内部浏览器跳转小程序

微信内部浏览器跳转小程序

1、引入微信js包

index.html中引入最新的js包

 <script src="https://res.wx.qq.com/open/js/jweixin-1.6.0.js" type="text/javascript"></script>

2、申请开放标签

通过config接口注入权限验证配置并申请所需开放标签 (开放标签的申请和JS接口的申请相互独立,因此是可以同时申请的

 wx.config({
  // debug: true, // 调试时可开启
  appId: 'appId', 
  timestamp: 0, // 必填,填任意数字即可
  nonceStr: 'nonceStr', // 必填,填任意非空字符串即可
  signature: 'signature', // 必填,填任意非空字符串即可
  jsApiList: ['wx-open-launch-weapp'], // 安卓上必填一个,随机即可
  openTagList:['wx-open-launch-weapp'], // 填入打开小程序的开放标签名
})
<wx-open-launch-weapp id="launch-btn" username="gh_xxxxxx" path="/pages/home/home">
  <template>
    <div class="btn" >打开微信小程序</div>
  </template>
</wx-open-launch-weapp>

判断是否是微信浏览器

var ua = navigator.userAgent.toLowerCase();//获取判断用的对象
console.log(ua)
if (ua.match(/MicroMessenger/i) == "micromessenger") {
  //在微信中打开
}
  • pc端
mozilla/5.0 (linux; android 6.0; nexus 5 build/mra58n) applewebkit/537.36 (khtml, like gecko) chrome/90.0.4430.212 mobile safari/537.36

!!注意

  • username不是appid是以gh开头的,是微信小程序的原始id,微信鉴权是公众号的appid
  • 还有我们跳转的路径要带.html
  • 本地会报组件未注册的错 可忽略
  • 微信网页模拟器也不可以 需要在真机上才可展示出来 (若未展示出来按钮 检查自己config注入是否成功

关于wx-open-launch-weapp样式

  • 在开放标签中,写宽100%是可以生效的,但是高却不是那么容易生效。

  • 在开放标签中,<script>标签中要加入<div style="position: absolute; "/>,这一块是触发区域,记得在这个div写样式(主要是让高生效)。

  • 如果害怕写不好样式,可以在外面把样式写好,这个直接opacity: 0;

遇到的注意点

在开放的过程中,需要注意点:

1、 通过config接口注入权限验证配置并申请所需开放标签

  • 微信鉴权必须得成功,注意vue中hash和history模式配置的区别

  • 微信鉴权成功,肯定是部署到服务器并且真机的情况下,才能调试,否则,肯定失败

2、 vue中,template标签冲突,会被忽略。

<wx-open-launch-weapp ref="launchbtn" id="launch-btn" username="gh_xxxxx" path="/pages/home/home.html">
  <template>
    <div style="width: 100px;height: 100px;background: green;">打开微信小程序</div>
  </template>
</wx-open-launch-weapp>

以上代码会报:The slot <template> or <script type="text/wxtag-template"> of <wx-open-launch-weapp> is missing

解决办法:动态渲染,代码如下

const createdTag = () => {
  let script = document.createElement('script');
  script.type = 'text/wxtag-template'
  // 问题:行内样式,宽高不生效
  script.text = '<div style="background: rgba(52, 120, 245, 1);width: 5.38rem;height: .96rem;line-height: .96rem;text-align: center;border-radius: .2rem;">前往测试</div>' 
  document.getElementById('launch-btn').appendChild(script);
}

3、 wx-open-launch-weapp样式不生效

在开发过程中,发现放在wx-open-launch-weapp标签里面的样式根本不起作用,里面引入的图片也不生效;这里的解决思路是,用一个透明的div,在div填充些文本,悬浮在需要点击触发跳转的模块上,然后用开放标签包裹。这样就避免了样式问题。

代码如下:

<div class="footer-btn fx-row">
  <div class="btn tx-center tx-28 tx-ff bg-8f5 b-r-20 m-auto" @click="goTest">前往测试</div>
  <!-- wx-open-launch-weapp 标签只能在微信鉴权后,微信浏览器中使用 -->
  <!-- 如果是微信环境: wx-open-launch-weapp标签盖在 btn 上-->
  <!-- 不是-- 则会使用goTest方法跳转 -->
  <wx-open-launch-weapp v-if="isWX" id="launch-btn" :username="username" :path="goPathUrl" style="display: block;"></wx-open-launch-weapp>
</div>
<script>
// 动态创建script里的标签及内容
const createdTag = () => {
  let script = document.createElement('script');
  script.type = 'text/wxtag-template'
  // 2021-9-28 以下代码,在按钮边边角角,可能会触发不到,所以,优化下
  // script.text = '前往测试' // 文字随便写,行内样式不会生效
  // 优化:这儿才是按钮的触发区域,用绝对定位,可以撑起触发区域的高度
  script.text = '<div style="position: absolute; top: 0; left: 0; width: 100%; height: 100%;opacity: 0;">前往测试</div>'
  document.getElementById('launch-btn').appendChild(script);
}
</script>
<style>
/* 样式写的比较多,也没有进行筛选 */
#launch-btn{
  color: #fff;
  width: 5.38rem;
  height: .96rem;
  line-height: .96rem;
  text-align: center;
  margin: auto;
  background: rgba(52, 120, 245, 1);
  border-radius: .2rem;
  word-break: break-all;
  word-wrap: break-word;
  position: absolute;
  left: 0;
  right: 0;
  top: 0;
  bottom: 0;
  opacity: 0;
}
</style>

4、点击按钮,提示:信息不完整,无法启动

最有可能的原因是 usename 或者是跳转路径错误

解决办法:

必须要先加载wx.config再写wx-open-launch-weapp标签

因为二者是异步的,如果直接在html里写wx-open-launch-weapp标签,会因为wx.config还没执行导致信息不完整

5、单双引号嵌套问题

双引号内不能包含双引号,单引号内不能出现单引号

改成

 let html = `<wx-open-launch-weapp id="launch-btn" username='${VITE_APP_MINIPROGRAME_GHOST_ID}' path="${goPathUrl}">
    ${script.outerHTML}
  </wx-open-launch-weapp>`

  // VITE_APP_MINIPROGRAME_GHOST_ID = 'gh_xxxxx'

6、跳转之后显示页面不存在

跳转之后显示页面不存在,请检查下path的路径结尾是否写上了.html

这个,我暂时没有去验证,我是直接加的.html后缀,可以正常跳转

外部浏览器跳转小程序

检测【QQ、抖音、钉钉、企业微信、淘宝、支付宝、京东】是否可以成功跳转微信小程序

可以通过微信提供的链接测试是否可以正常跳转

https://postpay-2g5hm2oxbbb721a4-1258211818.tcloudbaseapp.com/jump-mp.html

!! 注意

  • 钉钉 6.0.13无法跳转微信小程序
  • 微博无法跳转
  • 支付宝app中,跳转微信小程序会长按复制链接,打开浏览器搜索,无法正常跳转小程序

微博内打开的h5,跳转到微信小程序,没有反应

以上都是当时2021年开发做的笔记。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值