social-sharer
Version:
最 Pure 的社会化分享按钮
6 lines • 4.4 kB
JavaScript
/*!
* jquery.social-sharer.js v1.1.4
* http://cople.github.io/SocialSharer
* Licensed under MIT
*/
!function(e){"function"==typeof define&&define.amd?define(["jquery"],e):e("object"==typeof exports?require("jquery"):jQuery)}(function(e){function t(t,i){return"string"==typeof t?e.data(this[0],"SocialSharer")[t](i):this.each(function(){e.data(this,"SocialSharer")||e.data(this,"SocialSharer",new n(this,t))})}function i(e){var t=document.querySelector("meta[property='"+e+"']");return t?t.content:t}var r=Object.assign||function(e,t){if(void 0===e||null===e)return e;for(var i in t)t.hasOwnProperty(i)&&(e[i]=t[i]);return e},n=function(){this.init.apply(this,arguments)},o=n.defaults={url:i("og:url")||function(){var e=document.querySelector("link[rel='canonical']");return e?e.href:e}()||location.href,title:i("og:title")||document.title,summary:i("og:description")||function(e){var t=document.querySelector("meta[name='"+e+"']");return t?t.content:t}("description")||"",pic:i("og:image")||(document.images.length?document.images[0].src:""),source:i("og:site_name")||"",weiboKey:"",twitterVia:"",twitterHashTags:"",wechatTitle:"分享到微信",wechatTip:"用微信「扫一扫」上方二维码即可。",qrcodeSize:260,services:["weibo","wechat","qzone","qq","douban","yingxiang"],classNamePrefix:"icon icon-",onRender:null,onClick:null},c=n.templates={weibo:"http://service.weibo.com/share/share.php?url={url}&title={title}&pic={pic}&appkey={weiboKey}",qq:"http://connect.qq.com/widget/shareqq/index.html?url={url}&title={title}&summary={summary}&pics={pic}&site={source}",qzone:"http://sns.qzone.qq.com/cgi-bin/qzshare/cgi_qzshare_onekey?url={url}&title={title}&summary={summary}&pics={pic}&site={source}",douban:"https://www.douban.com/share/service?url={url}&title={title}&text={summary}&image={pic}",facebook:"https://www.facebook.com/sharer/sharer.php?u={url}",twitter:"https://twitter.com/intent/tweet?url={url}&text={title}&via={twitterVia}&hashtags={twitterHashTags}",gplus:"https://plus.google.com/share?url={url}",linkedin:"http://www.linkedin.com/shareArticle?mini=true&url={url}&title={title}&summary={summary}&source={source}",evernote:"http://www.evernote.com/clip.action?url={url}&title={title}",yingxiang:"http://app.yinxiang.com/clip.action?url={url}&title={title}",qrcode:"//api.qrserver.com/v1/create-qr-code/?size={qrcodeSize}x{qrcodeSize}&margin=20&data={url}",email:"mailto:?subject={title}&body={url}",webshare:"javascript:;"};n.addService=function(e,t){c[e]=t,t.replace(/\{(.*?)\}/g,function(e,t){o[t]=""})},n.prototype={constructor:n,init:function(e,t){this.container="string"==typeof e?document.querySelector(e):e,this.container._SocialSharer||(this.container._SocialSharer=this,this.options=r(o,this.mergeOptions(t||{})),this.options.qrcodeSize*=Math.min(2,window.devicePixelRatio||1),this.createIcons())},mergeOptions:function(e){var t,i;for(t in o)"onRender"!==t&&"onClick"!==t&&(i=this.container.getAttribute("data-"+t.replace(/[A-Z]/g,"-$&").toLowerCase()))&&(e[t]="services"===t?i.split(","):i);return e},setIcon:function(e,t){var i=this;e.className+=" "+this.options.classNamePrefix+t,"wechat"===t?(this.createQRCode(e),e.href="javascript:;"):(e.href=this.getURL(t),"email"!==t&&(e.target="_blank")),this.options.onClick&&(e.onclick=function(e){return i.options.onClick.call(i,e,t)}),"webshare"===t&&(e.origOnClick=e.onclick,e.onclick=function(t){navigator.share({title:i.options.title,text:i.options.text,url:i.options.url}),e.origOnClick&&e.origOnClick(t)}),this.options.onRender&&this.options.onRender.call(this,e,t)},createIcons:function(){var e,t,i,r,n=this.container.querySelectorAll("[data-service]");if(n.length)for(e=0,t=n.length;e<t;e++)i=n[e],r=i.getAttribute("data-service"),"webshare"!==r||navigator.share?this.setIcon(i,r):this.container.removeChild(i);else for(e=0,t=this.options.services.length;e<t;e++)("webshare"!==(r=this.options.services[e])||navigator.share)&&(i=document.createElement("a"),this.setIcon(i,r),this.container.appendChild(i))},createQRCode:function(e){var t=document.createElement("div");t.className="qrcode-box",t.innerHTML="<h4>"+this.options.wechatTitle+"</h4><img src='"+this.getURL("qrcode")+"' /><p>"+this.options.wechatTip+"</p>",e.appendChild(t)},getURL:function(e){var t=c["wechat"===e?"qrcode":e],i=this.options;return t?t.replace(/\{(.*?)\}/g,function(e,t){return encodeURIComponent(i[t])}):t}},e.fn.socialSharer=t});