微信分享
更多前端工具和笔记博客:
https://yaohuihou.github.io/
基于微信公众号分享,调用微信 sdk,引用本文件前必须保证页面已经引入(支持 https) http://res.wx.qq.com/open/js/jweixin-1.2.0.js 详细查看微信公众号开发
CommonJs
本文件判断 CommonJs API(module.exports),可在 vue 中引用此模块
// vue调用
const wxShare = require('./assets/share')
wxShare(config, callback)
// 普通页面调用
wxShare(config, callback)
config
config 是为接口权限配置,必传 ;callback 为成功之后的回调函数,非必传,
config = {
appId: '', // 必填,公众号的唯一标识
timestamp: , // 必填,生成签名的时间戳
nonceStr: '', // 必填,生成签名的随机串
signature: '',// 必填,签名
jsApiList: [], // 必填,调用api
WechatShareData:{ // 必填
'title': '分享文案',
'link': '分享链接',
'imgUrl': '分享图标',
'desc': '描述'
}
}
wxShare( config )
callback
callback 是微信 sdkapi 的其他扩展方法,非必填
wxShare(config, function() {
// 其他api扩展 非必填
wx.hideAllNonBaseMenuItem()
})
微信分享源码
/*! Weixin Share */
;(function(w) {
// check API
function checkJsApi(config) {
var shareArr = {
timeline: 'onMenuShareTimeline',
appmessage: 'onMenuShareAppMessage',
qq: 'onMenuShareQQ',
weiboApp: 'onMenuShareWeibo',
QZone: 'onMenuShareQZone'
}
for (var i = 0; i < config.jsApiList.length; i++) {
var API = config.jsApiList[i]
if (API.indexOf('share') != -1) {
var type = API.split(':')[2]
// 获取分享
wx[shareArr[type]](config.WechatShareData)
}
}
}
var wxShare = function(config, callback) {
wx.config({
debug: true,
appId: config.appId,
timestamp: config.timestamp, // 生成签名的时间戳
nonceStr: config.nonceStr, // 生成签名的随机串
signature: config.signature, // 签名
jsApiList: config.jsApiList
})
wx.ready(function() {
// 检验是否分享
checkJsApi(config)
// 回调函数可扩展其他方法
callback && callback()
})
//
wx.error(function(res) {})
}
// commonjs
if (typeof module !== 'undefined') {
module.exports = wxShare
} else {
w.wxShare = wxShare
}
})(typeof global !== 'undefined' ? global : this)