|
!(function(e, t) {
var config = {
wxconfig: 'http://api.pai.ai/wx/jsapi_signature',
callback: 'callback'
}, wxData = {
debug: false,
imgUrl: '',
link: '',
desc: '',
title: '',
timeLine: ''
}, wxConfig = {
hide: false,
close: false
}, jsApiList = [
'checkJsApi',
'onMenuShareTimeline',
'onMenuShareAppMessage',
'onMenuShareQQ',
'onMenuShareWeibo',
'hideMenuItems',
'showMenuItems',
'hideAllNonBaseMenuItem',
'showAllNonBaseMenuItem',
'translateVoice',
'startRecord',
'stopRecord',
'onRecordEnd',
'playVoice',
'pauseVoice',
'stopVoice',
'uploadVoice',
'downloadVoice',
'chooseImage',
'previewImage',
'uploadImage',
'downloadImage',
'getNetworkType',
'openLocation',
'getLocation',
'hideOptionMenu',
'showOptionMenu',
'closeWindow',
'scanQRCode',
'chooseWXPay',
'openProductSpecificView',
'addCard',
'chooseCard',
'openCard'
], wxApiFun
function isOpenOnPC() { // 判断当前网页是否在 PC 浏览器中打开
var ua = navigator.userAgent
return /windows nt/i.test(ua) || /macintosh/i.test(ua) || /linux x86_64/i.test(ua)
}
function isOpenInWeixin() { // 判断当前网页是否在微信内置浏览器中打开
return /micromessenger/i.test(navigator.userAgent)
}
function getWeixinVersion() {
var ua = navigator.userAgent,
mt = ua.match(/micromessenger\/([\d.]+)/i)
return (mt ? mt[1] : '')
}
// This function checks whether Wechat is the appointed version or not
// Cmp: http://jsperf.com/regexp-test-vs-indexof-ignore-upper-and-lower
function isWeixinVersion(version) {
// return new RegExp('micromessenger/' + version , 'i').test(navigator.userAgent)
return navigator.userAgent.toLowerCase().indexOf('micromessenger/' + version) != -1
}
function hideOptionMenu() {
wxConfig.hide = true
fixedWxData()
}
function showOptionMenu() {
wxConfig.hide = false
fixedWxData()
}
function closeWindow() {
wxConfig.close = true
fixedWxData()
}
function wxReady(data) {
data = typeof data === 'object' ? data : JSON.parse(data)
wx.config({
debug: wxData.debug,
appId: data.appId,
timestamp: data.timestamp,
nonceStr: data.nonceStr,
signature: data.signature,
jsApiList: jsApiList
})
var callbacks = {
trigger: function (res) {
// alert('用户点击发送给朋友')
if (JSWE.wxTrigger) {JSWE.wxTrigger()}
},
success: function (res) {
// alert('已分享')
if (JSWE.wxSuccess) {JSWE.wxSuccess()}
},
cancel: function (res) {
// alert('已取消')
if (JSWE.wxCancel) {JSWE.wxCancel()}
},
fail: function (res) {
// alert(JSON.stringify(res))
if (JSWE.wxFail) {JSWE.wxFail()}
}
}, shareInfo = function(flag) {
var _share = {
title: flag ? wxData.title : (wxData.timeLine || wxData.desc),
link: wxData.link,
imgUrl: wxData.imgUrl,
trigger: callbacks.trigger,
success: callbacks.success,
cancel: callbacks.cancel,
fail: callbacks.fail
}
if (flag) _share.desc = wxData.desc
return _share
}, wxApi = function() {
// 2. 分享接口
// 2.1 监听“分享给朋友”,按钮点击、自定义分享内容及分享结果接口
wx.onMenuShareAppMessage(shareInfo(1))
// 2.2 监听“分享到朋友圈”按钮点击、自定义分享内容及分享结果接口
wx.onMenuShareTimeline(shareInfo(0))
// 2.3 监听“分享到QQ”按钮点击、自定义分享内容及分享结果接口
wx.onMenuShareQQ(shareInfo(1))
// 2.4 监听“分享到微博”按钮点击、自定义分享内容及分享结果接口
wx.onMenuShareWeibo(shareInfo(1))
// 8 界面操作接口
// 8.1 隐藏右上角菜单
// 8.2 显示右上角菜单
if (wxConfig.hide) {wx.hideOptionMenu()} else {wx.showOptionMenu()}
// 8.7 关闭当前窗口
if (wxConfig.close) {wx.closeWindow()}
}
wx.ready(wxApi)
return wxApiFun = wxApi
}
if (isOpenInWeixin() || isOpenOnPC()) {
if ('undefined' !== typeof JSWE_CONF_UPDATE) JSWE_CONF_UPDATE(config)
$.ajax({
url: config.wxconfig,
type: 'get',
dataType: 'jsonp',
jsonpCallback: config.callback,
data: {
url: window.location.href.split('#')[0]
},
success: wxReady
})
}
function initWxData(data, flag) {
for(var d in data) {if (d in wxData) wxData[d] = data[d]}
if (flag) fixedWxData()
}
function changeWxData(key, value, flag) {
if (key in falDwxDataata) {wxData[key] = value}
if (flag) fixedWxData()
}
function fixedWxData() {
if ('undefined' !== typeof wxApiFun) wxApiFun()
}
var v = {
version: '1.0.5',
// Basic Vars
config: config,
wxData: wxData,
jsApiList: jsApiList,
// Weixin Function
isOpenInWeixin: isOpenInWeixin,
getWeixinVersion: getWeixinVersion,
isWeixinVersion: isWeixinVersion,
// Menu Function
hideOptionMenu: hideOptionMenu,
showOptionMenu: showOptionMenu,
closeWindow: closeWindow,
// Share Function
initWxData: initWxData,
changeWxData: changeWxData,
fixedWxData: fixedWxData
}
e.JSWE = e.V = v
})(window)
|