/** * ***说明*** * 在页面引入微信jsSDK * 微信浏览器分享到朋友圈或发送给微信朋友,需要引入这段脚本。 * 此脚本依赖于接口请求签名 http://consumer.huawei.com/cmkt/services/service/wx/sign * 由服务器引起的签名不正确会导致设置的缩略图或标题失效 * 缩略图 取的是子级的第一个标签jpg或png格式图 * 标题 取的是 这是标题 节点的文本 * 发送给朋友显示的描述取的是 content的值 * ***********此脚本仅在微信浏览器生效*********** */ $.WeChat = function () { var userAgentInfo = navigator.userAgent; if (userAgentInfo.indexOf("MicroMessenger") >= 0) { return true; } else { return false; } } function WechatShare(shareModel, successCallback, cancelCallback, errorCallback) { var signUrl = "http://consumer.huawei.com/cmkt/services/service/wx/sign?url=" + encodeURIComponent(window.location.href.split("#")[0]); var appId = "wxe3b3a57fc490237b"; //请求签名 $.ajax({ url: signUrl, type: "GET", dataType: "jsonp", jsonp: "jsonp", success: function (data) { var timestamp = data.timestamp; var nonceStr = data.nonceStr; var signature = data.signature; //配置微信分享 wx.config({ debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。 appId: appId, // 必填,公众号的唯一标识 timestamp: timestamp, // 必填,生成签名的时间戳 nonceStr: nonceStr, // 必填,生成签名的随机串 signature: signature,// 必填,签名,见附录1 jsApiList: ["onMenuShareTimeline", "onMenuShareAppMessage"] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2 }); var shareInfo; if (shareModel != null) { shareInfo = shareModel; } else { shareInfo = { url: window.location.href, img: $($("body img:first-child:not([src*='.svg'])")[0]).attr("src"), title: $("title").text(), descript: $("meta[name='description']").attr("content") }; } //微信分享ready wx.ready(function () { //取分享的标题 var shareTitle = shareInfo.title; //取分享的图片地址 var shareImgUrl = shareInfo.img; //取被分享的链接 var shareUrl = shareInfo.url; //取被分享的描述 var shareDescript = shareInfo.descript; // config信息验证后会执行ready方法,所有接口调用都必须在config接口获得结果之后,config是一个客户端的异步操作,所以如果需要在页面加载时就调用相关接口,则须把相关接口放在ready函数中调用来确保正确执行。对于用户触发时才调用的接口,则可以直接调用,不需要放在ready函数中。 wx.onMenuShareTimeline({ title: shareTitle, // 分享标题 link: shareUrl, // 分享链接 imgUrl: shareImgUrl, // 分享图标 success: function () { // 用户确认分享后执行的回调函数 successCallback && successCallback(); }, cancel: function () { // 用户取消分享后执行的回调函数 cancelCallback && cancelCallback(); } }); //分享给朋友 wx.onMenuShareAppMessage({ title: shareTitle, // 分享标题 desc: shareDescript, // 分享描述 link: shareUrl, // 分享链接 imgUrl: shareImgUrl, // 分享图标 success: function () { // 用户确认分享后执行的回调函数 successCallback && successCallback(); }, cancel: function () { // 用户取消分享后执行的回调函数 cancelCallback && cancelCallback(); } }); }); wx.error(function (res) { // config信息验证失败会执行error函数,如签名过期导致验证失败,具体错误信息可以打开config的debug模式查看,也可以在返回的res参数中查看,对于SPA可以在这里更新签名。 console.log(JSON.stringify(res)); errorCallback && errorCallback(res); }); }, error: function (err) { console.error(err); errorCallback && errorCallback(res); } }); }