125 lines
4.8 KiB
JavaScript
125 lines
4.8 KiB
JavaScript
/*
|
|
[Discuz!] (C)2001-2009 Comsenz Inc.
|
|
This is NOT a freeware, use is subject to license terms
|
|
|
|
$Id$
|
|
*/
|
|
|
|
var _share_tencent_weibo = function() {
|
|
var share_btn = function(_arr) {
|
|
if (_arr[0]) {
|
|
return _arr[0];
|
|
}
|
|
else {
|
|
var o = document.createElement("a"),
|
|
_ostyle = "width:92px;height:22px;background:url(http://open.t.qq.com/apps/qshare/images/icon.gif) no-repeat #f00;position:absolute;display:none;";
|
|
o.setAttribute("style", _ostyle);
|
|
o.style.cssText = _ostyle;
|
|
o.setAttribute("href", "javascript:;");
|
|
document.body.insertBefore(o, document.body.childNodes[0]);
|
|
return o;
|
|
}
|
|
} (arguments);
|
|
var share_area = function(_arr) {
|
|
if (_arr[1]) {
|
|
if ((typeof _arr[1] == "object" && _arr[1].length) || (_arr[1].constructor == Array)) {
|
|
return _arr[1];
|
|
} else {
|
|
return [_arr[1]];
|
|
}
|
|
}
|
|
else {
|
|
return [document.body];
|
|
}
|
|
} (arguments);
|
|
var current_area = share_area[0];
|
|
var _site = arguments[2] ? arguments[2] : "";
|
|
var _appkey = encodeURI(arguments[3] ? arguments[3] : "");
|
|
var _web = {
|
|
"name": arguments[4] || "",
|
|
"href": location.href,
|
|
"hash": location.hash
|
|
};
|
|
var _pic = function(area) {
|
|
var _imgarr = area.getElementsByTagName("img");
|
|
var _srcarr = [];
|
|
for (var i = 0; i < _imgarr.length; i++) {
|
|
_srcarr.push(_imgarr[i].src);
|
|
}
|
|
return _srcarr.join("|");
|
|
};
|
|
var _u = 'http://v.t.qq.com/share/share.php?url=$url$&appkey=' + _appkey + '&site=' + _site + '&title=$title$&pic=$pic$';
|
|
var _select = function() {
|
|
return (document.selection ? document.selection.createRange().text: document.getSelection()).toString().replace(/[\s\n]+/g, " ");
|
|
};
|
|
if ( !! window.find) {
|
|
HTMLElement.prototype.contains = function(B) {
|
|
return this.compareDocumentPosition(B) - 19 > 0
|
|
}
|
|
}
|
|
String.prototype.elength = function() {
|
|
return this.replace(/[^\u0000-\u00ff]/g, "aa").length;
|
|
}
|
|
document.onmouseup = function(e) {
|
|
e = e || window.event;
|
|
var o = e.target || e.srcElement;
|
|
for (var i = 0; i < share_area.length; i++) {
|
|
if (share_area[i].contains(o) || share_area[i] == o) {
|
|
var _e = {
|
|
"x": e.clientX,
|
|
"y": e.clientY
|
|
};
|
|
var _o = {
|
|
"w": share_btn.clientWidth,
|
|
"h": share_btn.clientHeight
|
|
};
|
|
var _d = window.pageYOffset || (document.documentElement || document.body).scrollTop || 0;
|
|
var x = (_e.x - _o.w < 0) ? _e.x + _o.w: _e.x - _o.w,
|
|
y = (_e.y - _o.h < 0) ? _e.y + _d - _o.h: _e.y + _d - _o.h + ( - [1, ] ? 10 : 0);
|
|
if (_select() && _select().length >= 10) {
|
|
with(share_btn.style) {
|
|
display = "inline-block";
|
|
left = (x - 5) + "px";
|
|
top = y + "px";
|
|
position = "absolute";
|
|
zIndex = "999999";
|
|
}
|
|
current_area = share_area[i];
|
|
break;
|
|
} else {
|
|
share_btn.style.display = "none";
|
|
}
|
|
|
|
} else {
|
|
share_btn.style.display = "none";
|
|
}
|
|
}
|
|
};
|
|
share_btn.onclick = function() {
|
|
var _str = _select();
|
|
var _strmaxlen = 280 - ("\u6211\u6765\u81EA\u4E8E\u817E\u8BAF\u5FAE\u535A\u5F00\u653E\u5E73\u53F0" + " " + _web.name).elength();
|
|
var _resultstr = "";
|
|
if (_str.elength() > _strmaxlen) {
|
|
_strmaxlen = _strmaxlen - 3;
|
|
for (var i = _strmaxlen >> 1; i <= _strmaxlen; i++) {
|
|
if ((_str.slice(0, i)).elength() > _strmaxlen) {
|
|
break;
|
|
}
|
|
else {
|
|
_resultstr = _str.slice(0, i);
|
|
}
|
|
}
|
|
_resultstr += "...";
|
|
} else {
|
|
_resultstr = _str;
|
|
}
|
|
if (_str) {
|
|
var url = _u.replace("$title$", encodeURIComponent(_resultstr + " " + _web.name)).replace("$pic$", _pic(current_area));
|
|
url = url.replace("$url$", encodeURIComponent(_web.href.replace(_web.hash, "") + "#" + (current_area["name"] || current_area["id"] || "")));
|
|
if (!- [1, ]) {
|
|
url = url.substr(0, 2048);
|
|
}
|
|
window.open(url, 'null', 'width=700,height=680,top=0,left=0,toolbar=no,menubar=no,scrollbars=no,location=yes,resizable=no,status=no');
|
|
}
|
|
};
|
|
}; |