微信小程序web-view页面分享,带传参,测试成功
小程序html代码
<!--index.wxml--> <web-view src="{{web_src}}" bindmessage="bindGetMsg"/>
小程序js代码
Page({ data: { web_src: 'https://cclm.sc108.net/mobile/', // 嵌入的网址 shareObj: '', share_src: '' }, onLoad: function (options) { // 指定分享页面,即分享页,非当前页时 if (options.return_url) { var web_url = decodeURIComponent(options.return_url); // 网址中加参数标记是小程序重新载入的 web_url += web_url.indexOf('?') == -1 ? '?' : '&'; web_url += 'platform=miniprogram'; var share_url = decodeURIComponent(options.share_url); } else { var web_url = 'https://cclm.sc108.net/mobile/' var share_url = web_url; } this.setData({ web_src: web_url, share_src: share_url, }); }, bindGetMsg: function(e) { console.log(e); this.data.shareObj = e.detail.data[e.detail.data.length - 1]; }, // 分享 onShareAppMessage(options) { var that = this var share_src = that.data.share_src // 当嵌入网址是重新载入时,更新分享链接为当前网址 if (options.webViewUrl.indexOf('miniprogram') == -1) { share_src = options.webViewUrl console.log(123); } let shareObj = this.data.shareObj; shareObj.url = '/pages/index/index?return_url=' +encodeURIComponent(share_src); console.log(shareObj); if (shareObj) { return { title:shareObj.shareTitle, desc: shareObj.shareDesc, path: shareObj.url, imageUrl: shareObj.shareImage, success: function(res) { console.log(res) } } } }, })
服务器端指定传参
<script src="https://res.wx.qq.com/open/js/jweixin-1.4.0.js"></script> var obj = { 'url':slink //分享链接,好像没效果 'shareDesc': sdesc, //分享描述,好像没效果 'shareImage': simgUrl, //分享图片 'shareTitle': stitle //分享标题 } wx.miniProgram.postMessage({ data: obj })
填坑说明
在网找到了很多,但试了都不行,要么缺参数,后面终于搞好了,事实上也是有点蒙B,记录一下
在 index.wxml代码中
绑定了 bindmessage="bindGetMsg" 这个方法,用于分享是触发传参用的,
而参数的来自已于服务器端放的代码 wx.miniProgram.postMessage 返回obj参数
还有一点,需要注意,分享的页面链接,要加上一些字符串和转换如:你的分链接是 share_src ,处理一下
share_src = '/pages/index/index?return_url=' +encodeURIComponent(share_src);
最后还要注意,这块代码,在onload方法中,好像没有执行,不过少了这个代码却不行
if (options.return_url) { var web_url = decodeURIComponent(options.return_url); // 网址中加参数标记是小程序重新载入的 web_url += web_url.indexOf('?') == -1 ? '?' : '&'; web_url += 'platform=miniprogram'; var share_url = decodeURIComponent(options.share_url); } else { var web_url = 'https://cclm.sc108.net/mobile/' var share_url = web_url; } this.setData({ web_src: web_url, share_src: share_url, }); }