75 lines
2.3 KiB
JavaScript
75 lines
2.3 KiB
JavaScript
import QRious from 'qrious'
|
|
|
|
var qrcodeInit = false
|
|
function showWXModal() {
|
|
let wx = document.querySelector('.js-wx-box')
|
|
let mask = document.querySelector('.mask')
|
|
if(!qrcodeInit) {
|
|
new QRious({
|
|
element: document.querySelector('.qrcode-canvas'),
|
|
value: location.href
|
|
})
|
|
qrcodeInit = true
|
|
}
|
|
wx.classList.add('in')
|
|
mask.classList.add('in')
|
|
}
|
|
|
|
function handleClick(type, opts) {
|
|
let url = null
|
|
switch(type) {
|
|
case 'weibo' :
|
|
url = `http://service.weibo.com/share/share.php?url=${opts.sUrl}&title=${opts.sTitle}&pic=${opts.sPic}`
|
|
break
|
|
case 'qq' :
|
|
url = `http://connect.qq.com/widget/shareqq/index.html?url=${opts.sUrl}&title=${opts.sTitle}&source=${opts.sDesc}`
|
|
break
|
|
case 'douban' :
|
|
url = `https://www.douban.com/share/service?image=${opts.sPic}&href=${opts.sUrl}&name=${opts.sTitle}&text=${opts.sDesc}`
|
|
break
|
|
case 'qzone' :
|
|
url = `http://sns.qzone.qq.com/cgi-bin/qzshare/cgi_qzshare_onekey?url=${opts.sUrl}&title=${opts.sTitle}&pics=${opts.sPic}&summary=${opts.sDesc}`
|
|
break
|
|
case 'facebook' :
|
|
url = `https://www.facebook.com/sharer/sharer.php?u=${opts.sUrl}`
|
|
break
|
|
case 'twitter' :
|
|
url = `https://twitter.com/intent/tweet?text=${opts.sTitle}&url=${opts.sUrl}&via=${themeConfig.baseUrl}`
|
|
break
|
|
case 'google' :
|
|
url = `https://plus.google.com/share?url=${opts.sUrl}`
|
|
break
|
|
case 'weixin' :
|
|
showWXModal()
|
|
break
|
|
}
|
|
if(url) {
|
|
window.open(url)
|
|
}
|
|
}
|
|
|
|
let init = function() {
|
|
let $sns = document.querySelectorAll('.share-sns')
|
|
if (!$sns || $sns.length === 0) return
|
|
|
|
let sUrl = window.location.href
|
|
let sTitle = document.querySelector('title').innerHTML
|
|
let $img = document.querySelectorAll('.article-entry img')
|
|
let sPic = $img.length ? document.querySelector('.article-entry img').getAttribute('src') : ''
|
|
if ((sPic !== '') && !/^(http:|https:)?\/\//.test(sPic)) {
|
|
sPic = window.location.origin + sPic
|
|
}
|
|
Array.prototype.forEach.call($sns, ($em) => {
|
|
$em.onclick = (e) => {
|
|
let type = $em.getAttribute('data-type')
|
|
handleClick(type, {
|
|
sUrl: encodeURIComponent(sUrl),
|
|
sPic: encodeURIComponent(sPic),
|
|
sTitle: sTitle,
|
|
sDesc: sTitle
|
|
})
|
|
}
|
|
})
|
|
}
|
|
|
|
export default { init } |