123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136 |
- var SnsShare = {
- buttons : {},
- protocols : {
- tsina: 'http://v.t.sina.com.cn/share/share.php?title=%s&url=%s&pic=%s&source=bookmark&appkey=%s&ralateUid=%s',
- tqq : 'http://share.v.t.qq.com/index.php?c=share&a=index&title=%s&url=%s&pic=%s&appkey=%s&site=lolbox.duowan.com',
- qzone : 'http://sns.qzone.qq.com/cgi-bin/qzshare/cgi_qzshare_onekey?title=%s&url=%s&pics=%s&summary=%s'
- },
- init : function() {
- for (var k in SnsShare.protocols) {
- var buttons = SnsShare.getElementsByClassName(null, 'a', 'button_' + k);
- if (buttons.length > 0) {
- var buttonsToAdd = [];
- for (var i = 0, j = buttons.length; i < j; i++) {
- if (buttons[i].onclick) continue;
- buttons[i].onclick = function() {
- SnsShare.share(this);
- return false;
- };
- buttons[i].style.cursor = 'pointer';
- buttonsToAdd.push(buttons[i]);
- };
- SnsShare.buttons[k] = buttonsToAdd;
- }
- }
- },
- share : function(button) {
- var key = button.className.substr(7);
- if (!SnsShare[key]) return;
- var appkey = jiathis_config.appkey[key];
- var protocol = SnsShare.protocols[key];
- var url = SnsShare[key].call(null, appkey, protocol);
- window.open(url);
- },
- tsina : function(appkey, protocol) {
- var url = jiathis_config.url || window.location.href;
- var pic = jiathis_config.pic || '';
- return SnsShare.sprintf(protocol, encodeURIComponent(jiathis_config.title), encodeURIComponent(url),
- encodeURIComponent(pic), appkey, jiathis_config.ralateuid['tsina']);
- },
- tqq : function(appkey, protocol) {
- var url = jiathis_config.url || window.location.href;
- var pic = jiathis_config.pic || '';
- return SnsShare.sprintf(protocol, encodeURIComponent(jiathis_config.title), encodeURIComponent(url),
- encodeURIComponent(pic), appkey);
- },
- qzone : function(appkey, protocol) {
- var url = jiathis_config.url || window.location.href;
- var pic = jiathis_config.pic || '';
- return SnsShare.sprintf(protocol, encodeURIComponent(jiathis_config.title), encodeURIComponent(url),
- encodeURIComponent(pic), encodeURIComponent(jiathis_config.summary));
- },
- getElementsByClassName : function(fatherId, tagName, className) {
- var node = fatherId && document.getElementById(fatherId) || document;
- tagName = tagName || "*";
- className = className.split(" ");
- var classNameLength = className.length;
- for (var i = 0, j = classNameLength; i < j; i++) {
- //创建匹配类名的正则
- className[i] = new RegExp("(^|\\s)" + className[i].replace(/\-/g, "\\-") + "(\\s|$)");
- }
- var elements = node.getElementsByTagName(tagName);
- var result = [];
- for (var i = 0, j = elements.length, k = 0; i < j; i++) { //缓存length属性
- var element = elements[i];
- while (className[k++].test(element.className)) { //优化循环
- if (k === classNameLength) {
- result[result.length] = element;
- break;
- }
- }
- k = 0;
- }
- return result;
- },
- sprintf : function() {
- var i = 0,
- a, f = arguments[i++],
- o = [],
- m, p, c, x, s = '';
- while (f) {
- if (m = /^[^%]+/.exec(f)) {
- o.push(m[0]);
- } else if (m = /^%{2}/.exec(f)) {
- o.push('%');
- } else if (m = /^%(?:(\d+)\$)?(\+)?(0|'[^$])?(-)?(\d+)?(?:\.(\d+))?([b-fosuxX])/.exec(f)) {
- if (((a = arguments[m[1] || i++]) == null) || (a == undefined)) {
- throw ('Too few arguments.');
- }
- if (/[^s]/.test(m[7]) && (typeof(a) != 'number')) {
- throw ('Expecting number but found ' + typeof(a));
- }
- switch (m[7]) {
- case 'b':
- a = a.toString(2);
- break;
- case 'c':
- a = String.fromCharCode(a);
- break;
- case 'd':
- a = parseInt(a);
- break;
- case 'e':
- a = m[6] ? a.toExponential(m[6]) : a.toExponential();
- break;
- case 'f':
- a = m[6] ? parseFloat(a).toFixed(m[6]) : parseFloat(a);
- break;
- case 'o':
- a = a.toString(8);
- break;
- case 's':
- a = ((a = String(a)) && m[6] ? a.substring(0, m[6]) : a);
- break;
- case 'u':
- a = Math.abs(a);
- break;
- case 'x':
- a = a.toString(16);
- break;
- case 'X':
- a = a.toString(16).toUpperCase();
- break;
- }
- a = (/[def]/.test(m[7]) && m[2] && a >= 0 ? '+' + a : a);
- c = m[3] ? m[3] == '0' ? '0' : m[3].charAt(1) : ' ';
- x = m[5] - String(a).length - s.length;
- p = m[5] ? str_repeat(c, x) : '';
- o.push(s + (m[4] ? a + p : p + a));
- } else {
- throw ('Huh ?!');
- }
- f = f.substring(m[0].length);
- }
- return o.join('');
- }
- };
|