import jsonp from 'jsonp' function toConfigure() { return new Promise((resolve, reject) => { let name = '新时代网络文明建设展' name = encodeURIComponent(name) let uri = encodeURIComponent(location.href.split('#')[0]) jsonp( '//www.4dage.com/wechat/jssdk/share?name=' + name + '&uri=' + uri, { param: 'callback', }, function (err, data) { console.log(data, '-------------------------------------=========') wx.config({ debug: false, appId: data.appId, timestamp: data.timestamp, nonceStr: data.nonceStr, signature: data.signature, jsApiList: [ 'checkJsApi', 'onMenuShareTimeline', 'onMenuShareAppMessage', 'updateTimelineShareData', 'updateAppMessageShareData', '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', ], }) resolve() } ) // jsonp({ // url: '//www.4dage.com/wechat/jssdk/share', // data: { // name: name, // uri: location.href.split('#')[0], // }, // // 把前端方法作为参数传递给服务器 // success: function (data) { // console.log(data) // wx.config({ // debug: false, // appId: data.appId, // timestamp: data.timestamp, // nonceStr: data.nonceStr, // signature: data.signature, // jsApiList: [ // 'checkJsApi', // 'onMenuShareTimeline', // 'onMenuShareAppMessage', // 'updateTimelineShareData', // 'updateAppMessageShareData', // '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', // ], // }) // resolve() // }, // }) // $.ajax({ // url: '//www.4dage.com/wechat/jssdk/share', // type: 'get', // data: { // uri: location.href.split('#')[0], // name: '厦门四维时代微信公众号', // }, // dataType: 'jsonp', // //jsonpCallback: "success_jsonp", // success: function (data, textStatus) { // console.log(data) // wx.config({ // debug: false, // appId: data.appId, // timestamp: data.timestamp, // nonceStr: data.nonceStr, // signature: data.signature, // 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', // ], // }) // resolve() // }, // error: function (XMLHttpRequest, textStatus, errorThrown) { // reject('jsonp.error:' + textStatus) // }, // }) }) } function strToJSON(search) { let args = search.substr(1).split('&') let obj = {} args.forEach(arg => { let index = arg.indexOf('=') if (!~index) { obj[arg] = null } else { obj[arg.substr(0, index)] = arg.substr(index + 1) } }) return obj } function jsonToStr(data) { let strs = [] Object.keys(data).forEach(k => { if (data[k] !== null) { strs.push(`${k}=${data[k]}`) } }) return '?' + strs.join('&') } function setup({ title, link, imgUrl, desc }) { let defaultFn = () => { } let defaultChar = '' let search = link.substr(link.indexOf('?')) let path = link.substr(0, link.indexOf('?')) let data = strToJSON(search) wx.ready(function () { // 微信朋友圈 data.open = 'wx_friends' wx.onMenuShareTimeline({ title, link: path + jsonToStr(data), imgUrl, desc }) // 微信好友 data.open = 'wx_friend' wx.onMenuShareAppMessage({ title, desc, link: path + jsonToStr(data), imgUrl, type: defaultChar, dataUrl: defaultChar }) // 微博 data.open = 'weibo' wx.onMenuShareWeibo({ title, desc, link: path + jsonToStr(data), imgUrl, success: defaultFn, cancel: defaultFn }) // 空间 data.open = 'qq_zone' wx.onMenuShareQZone({ title, desc, link: path + jsonToStr(data), imgUrl, success: defaultFn, cancel: defaultFn }) // QQ好友 data.open = 'qq' wx.onMenuShareQQ({ title, desc, link: path + jsonToStr(data), imgUrl, success: defaultFn, cancel: defaultFn }) wx.hideMenuItems({ menuList: [ 'menuItem:copyUrl', 'menuItem:openWithQQBrowser', 'menuItem:openWithSafari', 'menuItem:originPage', ] }); wx.error(function (e) { console.log(e) }) }) } // // 封装JSONP方法 // function jsonp(options) { // // 创建一个script标签 // var script = document.createElement('script') // // 随机生成一个函数名 // /* Math.random() 随机生成小数 0.123 // toString() 转换为字符串 // replace('.','') 把点替换 0123 // 最后随机生成的funName是 myJSONP0123 这种格式 */ // var funName = 'myJSONP' + Math.random().toString().replace('.', '') // // 多个参数进行拼接 // var param = '' // for (var arr in options.data) { // param += '&' + arr + '=' + options.data[arr] // } // // 把这个客户传过来的函数设置为全局函数 // // . 后面不能跟变量,所以只能用[] // window[funName] = options.success // // 给script中的src属性赋值 // script.src = options.url + '?callback=' + funName + param // // 放到body容器里面 // document.body.appendChild(script) // // 等script标签加载完之后,清除标签 // script.onload = function () { // document.body.removeChild(script) // } // } export default async args => { if (typeof wx != 'undefined' && window.navigator.userAgent.toLowerCase().match(/MicroMessenger/i) == "micromessenger") { // if (typeof wx != 'undefined') { //需要引入 https://res.wx.qq.com/open/js/jweixin-1.2.0.js !args.donotconfig && await toConfigure() setup(args) } }