直接上干货,不多哔哔~~
注意事项 :1、引入微信JSSDK文件
- 需要再公众号里面绑定需要跳转的小程序
- 获取
jssdk
配置的时候需要再公众平台绑定安全域名- 微信版本要求为:7.0.12及以上。 系统版本要求为:
iOS
10.3及以上、Android
5.0及以上。- 如若需要在微信的
wx-open-launch-weapp
添加img
标签,img
的路径需要为base64或者远程地址,不能为本地的静态地址
【微信|微信公众号H5跳转小程序,wx-open-launch-weapp】引用地址:http://res2.wx.qq.com/open/js/jweixin-1.6.0.js
注意:如果版本过低,可能导致wx-open-launch-weapp 标签会无法使用2、注入微信接口验证,申请开放标签
在这之前可以先看下微信提供的官方文档静态网站 H5 跳小程序 | 微信开放文档,其中对于appid的定义是跳转小程序的appid。但是你别信,我就中了这个毒,按钮一直加载不出来。
文章图片
fetch().then((res) => {
let urlN = window.location.href.split('#')[0];
let timestampn = new Date().getTime().toString();
let timestamp = timestampn.substring(0, 10);
//生成签名的时间戳
let nonceStr = Math.random().toString(36).substr(2);
//生成签名的随机串
let con = `jsapi_ticket=${res.content.ticket}&noncestr=${nonceStr}×tamp=${timestamp}&url=${urlN}`
let signature = hex_sha1(con);
//签名
wx.config({
debug: false, // 调试时可开启
appId: res.content.appid, //
timestamp: timestamp, // 必填,填任意数字即可
nonceStr: nonceStr, // 必填,填任意非空字符串即可
signature: signature, // 必填,填任意非空字符串即可
jsApiList: ['chooseImage'], // 必填,随意一个接口即可
openTagList: ['wx-open-launch-weapp'], // 填入打开小程序的开放标签名wx-open-launch-weapp
})
wx.ready(function() {
vm.entryVisiable = false;
vm.$nextTick(() => {
try {
var btn = document.getElementById('launch-btn');
btn.addEventListener('launch', function(e) {
console.log('success');
console.log(e);
});
btn.addEventListener('error', function(e) {
console.log('fail', e);
})
} catch (error) {}
})
});
wx.error(function(err) {
vm.$toast(err.errMsg);
});
})
fetch是后端接口用于获取公众号appid的,及ticket;3、index.vue页面
hex_sha1()方法是签名加密方法 在我之前的博客中有提到;
注意点:
- username是需要跳转小程序的原始id,以gh_开头
- path是需要跳转的微信小程序的路径,需要在路径后边添加.html。否则跳转不过去
- Vue框架需要把template标签转换成script标签,避免和Vue本身的template标签混合报错
4、控制台报错
如果发现以下错误
请在Vue文件入口处即main.js中添加 :[Vue warn]: Unknown custom element:- did you register the component correctly? For recursive components, make sure to provide the "name" option.
Vue.config.ignoredElements = ['wx-open-launch-weapp'];
5、如果需要在wx-open-launch-weapp标签中添加动态图片
我的办法是写成了绝对路径;
看了多个博客的内容:
- 使用小程序的语法
文章图片
- 使用js单双引号包裹变量
这俩种没实现我要的效果,图片没有加载出来。
还有像我文章开头说得提供base64感觉和我的绝对路径一个意思,大家可以试一试。
如果有这方面的实现方法,请不吝赐教~~
推荐阅读
- elementui|vue2+elTree 实现右键菜单
- 前端|前端食堂技术周刊第 44 期(Bun、Vue.js 挑战、React 状态管理的新浪潮、Can I DevTools、函数式编程)
- pits|[vue3] error in ./node_modules/@vue/reactivity/dist/reactivity.esm-bundler.js
- prometheus|Prometheus监控(三)—— 钉钉和企业微信告警
- 个人免签约收款系统|微信支付宝个人免签约收款系统的实现
- vue|vue环境搭建
- Java|ElasticSearch 7.8.1教程(from b站狂神)+JD商城仿站
- javascript|vue实现HTML转PDF (已解决清晰、页边距、图片导出等问题)
- vue.js|20211025_Vue生命周期和钩子函数