微信浏览器分享时提示「onmessage:wx.updateAppMessageShareData is not a function」错误,导致页面分享都失败。分享出去的只有一串网址。
一般提示这个首先考虑的是微信JS SDK没有引入导致。
但是本次案例不是这个原因,所以才分享出来,希望大家碰到这个问题时少走弯路。
相关微信分享代码如下:
wx.ready(function () { var title = document.title; var myurl = location.href.split('#')[0]; var defaultImg = 'https://bbs.txwb.com/uc_server/data/avatar/000/07/57/03_avatar_small.jpg'; var img = $("body img"); var imgUrl = img.length >= 3 ? img[2].src : defaultImg; var desc = getDesc(); if (!desc || desc == "") { desc = "天下网吧是最早最权威的网吧门户站,为网吧业主和相关人员提供网吧和网咖的技术,网吧联盟,经营,管理,网吧系统,无盘网吧,主页,网吧影视,收费,网吧软件,以及网吧论坛交流服务为主的行业第一站"; } //分享给朋友 wx.updateAppMessageShareData({ title: title, // 分享标题 desc: desc, // 分享描述 link: myurl + '?from=wxh5Share', // 分享链接 imgUrl: imgUrl, // 分享图标 type: 'link', // 分享类型,music、video或link,不填默认为link success: function (res) { // 用户确认分享后执行的回调函数 console.log("res", res); }, cancel: function () { // 用户取消分享后执行的回调函数 } }); wx.updateTimelineShareData({ title: title, // 分享标题 link: myurl + '?from=wxh5Share', // 分享链接 desc: desc, // 分享描述 imgUrl: imgUrl, // 分享图标 success: function (res) { // 用户确认分享后执行的回调函数 console.log("res", res); }, cancel: function () { // 用户取消分享后执行的回调函数 } }); });在这代码前面已经确认过,引入了微信JS SDK 1.6.0版本,代码如下:
<script type="text/javascript" src="//res.wx.qq.com/open/js/jweixin-1.6.0.js"></script>
如果是没引入JS SDK的话,那么在wx.ready这里就应该报错。所以一直排除了没有引入SDk的原因,导致一直没能解决问题。
实在没办法,困扰了一个上午后,突然想到,前几天有新增判断小程序环境的一些代码,代码是从网上直接复制的。仔细一检查代码发现有行代码是这样的:
<script src="//res.wx.qq.com/open/js/jweixin-1.3.2.js"></script>
这就是问题所在了。
这个代码放在引入1.6.0版本的微信JS SDK代码的前面,所以咱们一直引入的其实是1.3.2版本的JS SDK。而1.4.0版本前的微信JS SDK是没有wx.updateAppMessageShareData函数的。但是有wx.ready,所以就出现了标题中的错误了。
知道原因,解决起来就方便了,把引入的1.3.2版本SDK改成1.6.0版本的就搞定了。又可以愉快的微信分享H5页面啦: