UNPKG

@discuzq/sdk

Version:

discuz dsk

209 lines (182 loc) 5.69 kB
"use strict"; require("core-js/modules/es.regexp.exec.js"); require("core-js/modules/es.string.match.js"); /*** 分享参数说明 opts = { title: '', // 微信分享标题 summary: '!', // qq分享描述 desc: '!', // 微信分享描述 url: window.location.href, // qq分享链接 link: window.location.href, // 微信分享链接 pic: '', // qq分享图标 imgUrl: '' // 微信分享图标 } ***/ (function () { var wxapi = "//res.wx.qq.com/open/js/jweixin-1.6.0.js", qqapi = "//open.mobile.qq.com/sdk/qqapi.js?_bid=152", qzapi = "//qzonestyle.gtimg.cn/qzone/phone/m/v4/widget/mobile/jsbridge.js?_bid=339"; var require; function _require(url, onload) { var doc = document; var head = doc.head || doc.getElementsByTagName("head")[0] || doc.documentElement; var node = doc.createElement("script"); node.onload = onload; node.onerror = function () {}; node.async = true; node.src = url[0]; head.appendChild(node); } function _initWX(data) { if (!data.WXconfig) { return; } require([wxapi], function (wx) { if (!wx.config) { wx = window.wx; } var conf = data.WXconfig; wx.config({ debug: false, appId: conf.appId, timestamp: conf.timestamp, nonceStr: conf.nonceStr, signature: conf.signature, jsApiList: ["onMenuShareTimeline", "onMenuShareAppMessage", "onMenuShareQQ", "onMenuShareQZone", "updateTimelineShareData", "updateAppMessageShareData"] }); wx.error(function (res) {}); wx.ready(function () { var config = { title: data.title, desc: data.summary, link: data.url, imgUrl: data.pic, type: "", dataUrl: "", success: function success() { data.callback && data.callback(); }, cancel: function cancel() {} }; wx.updateTimelineShareData && wx.updateTimelineShareData(config); //分享到朋友圈”及“分享到QQ空间 wx.updateAppMessageShareData && wx.updateAppMessageShareData(config); //分享给朋友”及“分享到QQ wx.onMenuShareAppMessage && wx.onMenuShareAppMessage(config); //分享到微信,即将废弃 wx.onMenuShareQQ && wx.onMenuShareQQ(config); //分享到qq,即将废弃 wx.onMenuShareQZone && wx.onMenuShareQZone(config); //分享到qq空间,即将废弃 if (conf.swapTitleInWX) { wx.onMenuShareTimeline && wx.onMenuShareTimeline({ title: data.summary, desc: data.title, link: data.url, imgUrl: data.pic, type: "", dataUrl: "", success: function success() { data.callback && data.callback(); }, cancel: function cancel() {} }); } else { wx.onMenuShareTimeline && wx.onMenuShareTimeline(config); //分享到朋友圈,即将废弃 } }); }); } function _initQQ(data) { var info = { title: data.title, desc: data.summary, share_url: data.url, image_url: data.pic }; function doQQShare() { try { if (data.callback) { window.mqq.ui.setOnShareHandler(function (type) { if (type == 3 && (data.swapTitle || data.WXconfig && data.WXconfig.swapTitleInWX)) { info.title = data.summary; } else { info.title = data.title; } info.share_type = type; info.back = true; window.mqq.ui.shareMessage(info, function (result) { if (result.retCode === 0) { data.callback && data.callback.call(this, result); } }); }); } else { window.mqq.data.setShareInfo(info); } } catch (e) {} } if (window.mqq) { doQQShare(); } else { require([qqapi], function () { doQQShare(); }); } } function _initQZ(data) { function doQZShare() { if (QZAppExternal && QZAppExternal.setShare) { var imageArr = [], titleArr = [], summaryArr = [], shareURLArr = []; for (var i = 0; i < 5; i++) { imageArr.push(data.pic); shareURLArr.push(data.url); if (i === 4 && (data.swapTitle || data.WXconfig && data.WXconfig.swapTitleInWX)) { titleArr.push(data.summary); summaryArr.push(data.title); } else { titleArr.push(data.title); summaryArr.push(data.summary); } } QZAppExternal.setShare(function (data) {}, { "type": "share", "image": imageArr, "title": titleArr, "summary": summaryArr, "shareURL": shareURLArr }); } } if (window.QZAppExternal) { doQZShare(); } else { require([qzapi], function () { doQZShare(); }); } } function init(opts) { var ua = navigator.userAgent; var isWX = ua.match(/MicroMessenger\/([\d.]+)/), isQQ = ua.match(/QQ\/([\d.]+)/), isQZ = ua.indexOf("Qzone/") !== -1; isWX && _initWX(opts); isQQ && _initQQ(opts); isQZ && _initQZ(opts); } if (typeof define === "function" && (define.cmd || define.amd)) { if (define.cmd) { require = seajs.use; } else { if (define.amd) { require = window.require; } } define(function () { return init; }); } else { require = _require; window.setShareInfo = init; } })();