js类 from qq_javascript技巧
May 16, 2016 pm 07:24 PMvar Comment = new Object();
var $C = function(tagName)
{
return document.createElement(tagName);
};
String.prototype.trim = function()
{
return this.replace(/^\s*|\s*$/g,"");
};
String.prototype.realLength = function()
{
return this.replace(/[^\x00-\xff]/g,"**").length;
};
String.prototype.left = function(n)
{
if (this.length > n)
{
return this.substr(0, n) + '...';
}
else
{
return this;
}
};
Array.prototype.remove = function(n)
{
if (n {
return this;
}
else
{
return this.slice(0, n).concat(this.slice(n + 1, this.length));
}
};
function findPosX(obj)
{
var curleft = 0;
if (obj && obj.offsetParent)
{
while (obj.offsetParent)
{
curleft += obj.offsetLeft;
obj = obj.offsetParent;
}
}
else if (obj && obj.x) curleft += obj.x;
return curleft;
}
function findPosY(obj)
{
var curtop = 0;
if (obj && obj.offsetParent)
{
while (obj.offsetParent)
{
curtop += obj.offsetTop;
obj = obj.offsetParent;
}
}
else if (obj && obj.y) curtop += obj.y;
return curtop;
}
var input_domain = 'http://input.comment.qq.com';
var index_domain = 'http://comment1.qq.com';
var pinglun_domain = 'http://pinglun.qq.com';
var js_domain = 'http://pinglun.qq.com';
var img_domain = 'http://mat1.qq.com/pinglun';
Comment.Configure = {
version: '1.0',
newline: '\n',
site_length: 20,
key_length: 20,
id_length: 10,
index_line_sum: 10000,
index_width: 5,
default_mode: 'origin_count',
default_order: 1,
default_reply_per_page: 10,
quote_str_len: 60,
intro_len: 150,
debate_intro_len: 200,
content_len: 200,
reply_default_title: '请填写标题',
intro_min_length: 20,
request_delay: 100,
login_frame_delay: 2000,
reply_type_def: {
'1': '[精] ',
'2': '[荐] ',
'3': '[专] '
},
postUrl: input_domain + '/post.cmt',
logoutUrl: input_domain + '/cgi-bin/qqlogout',
commentIndex: 'http://pinglun.qq.com/',
loginIframeUrl: index_domain + '/i_login.htm',
defaultLogoUrl: img_domain + '/images/defpic.jpg'
}
Comment.Define = {
getReplyType: function(type)
{
if (Comment.Configure.reply_type_def[type])
{
return Comment.Configure.reply_type_def[type];
}
else
{
return '';
}
}
}
Comment.PGV_Count = function(option)
{
if (typeof(pgvMain) == 'function')
{
pvRepeatCount = 1;
pvCurDomain = sDomain;
if (option)
{
if (option.domain)
{
pvCurDomain = option.domain;
}
if (option.path)
{
pvCurUrl = option.path;
}
}
pgvMain();
//Debug.log('call pgv function');
}
}
Comment.UrlFactory = {
get3LevelDir: function(id)
{
var path = parseInt(id / 1000000) + '/';
path += parseInt(id / 1000) + '/';
path += id / 1;
return path;
},
getCommentUrl: function(id)
{
return (this.get3LevelDir(id) + '/');
},
getDebateUrl: function(id)
{
return this.get3LevelDir(id);
},
getUserUrl: function(id)
{
return this.get3LevelDir(id);
},
getReplyUrl: function(key)
{
var path = key.substr(0, 8);
path += '/' + (key.substr(8, 4));
path += '/' + (key.substr(12, 2));
path += '/' + key;
return path;
},
getIndexUrl: function(id)
{
var length = id.toString().length;
if (length {
for (var i = 0; i {
id = '0' + id;
}
}
return id;
},
getIndexDir: function(mode)
{
var modes = {
'origin_count': 'originindex',
'total_count': 'allindex',
'top_count': 'topindex'
};
return modes[mode];
},
getRangeHeader: function(start, length, line_len)
{
var range_start = start * line_len;
var range_length = length * line_len;
return ['Range','bytes=' + range_start + '-' + (parseInt(range_start) + parseInt(range_length) - 1 - Comment.Configure.newline.length)];
},
getCommentNormalUrl: function(site, id)
{
return 'comment.htm?site=' + site + '&id=' + id;
},
getCommentGroupUrl: function(site, id)
{
return 'comment_group.htm?site=' + site + '&id=' + id;
},
getCommentDebateUrl: function(site, id)
{
return 'comment_debate.htm?site=' + site + '&id=' + id;
},
getCommentUserUrl: function(uin)
{
return 'comment_user.htm?uin=' + uin;
},
getCommentUserLink: function(uin, nick)
{
return '' + (nick ? nick : uin) + '';
},
getCommentListLink: function(site_en, site_cn, sort_en, sort_cn, className)
{
if (className)
{
className = 'class="' + className + '"';
}
else
{
className = '';
}
return '评论首页 >> '
+ '' + site_cn + ' >> '
+ '' + sort_cn + '';
}
}
Comment.ContentFormat = {
decode: function(content)
{
return content.split(Comment.Configure.newline);
}
}
Comment.DataObjectFactory = function(content, model)
{
content = Comment.ContentFormat.decode(content);
var dataModel = Comment.DataObject[model];
if (content.length - 1 != dataModel.length)
{
if (model != 'commentinfo' && model != 'listsum')
{
//alert('[DEBUG 信息] O/R 映射失败,远程数据和本地模型数量不匹配!请检查!');
}
}
var dataObject = new Object();
for (var i = 0; i {
dataObject[dataModel[i]] = content[i];
}
return dataObject;
}
Comment.DataObject = {
'commentinfo':
[
'site_cn',
'sort_en',
'sort_cn',
'source',
'source_url',
'title',
'url',
'intro',
'intro_img',
'group_id',
'intro_show',
'create_time',
'debate_id'
],
'groupinfo':
[
'site_cn',
'title',
'url',
'intro',
'intro_img',
'comment_id',
'intro_show',
'create_time'
],
'debateinfo':
[
'site_cn',
'title',
'url',
'intro',
'intro_img',
'agree_id',
'disagree_id',
'middle_id',
'intro_show',
'create_time'
],
'sum':
[
'origin_count',
'total_count',
'top_count'
],
'reply':
[
'comment_id',
'uin',
'nickname',
'pub_time',
'pass_time',
'ip',
'title',
'content',
'reply_key',
'is_del',
'reply_type',
'reply_kind',
'tips'
],
'pksum':
[
'agree',
'disagree',
'middle'
],
'listsum':
[
'all'
],
'usersum':
[
'total_count',
'top_count',
'is_expert'
],
'userinfo':
[
'user_img',
'user_intro'
]
}
/* 控制器类 */
Comment.Control = new Object();
/* 分页控制器 */
Comment.Control.Pagination = Class.create();
Comment.Control.Pagination.prototype = {
initialize: function(option)
{
this.totalPage = option.totalPage;
this.currPage = 1;
this.zoom_start = 3;
this.zoom_end = 613;
this.bindControl();
},
reset: function(option)
{
this.totalPage = option.totalPage;
this.currPage = 1;
this.movePageControl(this.currPage);
},
updateOrder: function()
{
},
countCurrPage: function(offset)
{
var page = parseInt(offset * this.totalPage / this.zoom_end) + 1;
if (page > this.totalPage)
{
page = this.totalPage;
}
return page;
},
movePageControl: function(toPage)
{
if (toPage this.totalPage)
{
return;
}
var offset = 0;
if (toPage == 1)
{
offset = this.zoom_start;
}
else if (toPage == this.totalPage)
{
offset = this.zoom_end;
}
else
{
offset = this.zoom_start + (toPage - 1) * (this.zoom_end / (this.totalPage - 1));
}
$('scrfloat').style.left = offset + 'px';
//$('scrfloat_2').style.left = offset + 'px';
},
bindControl: function()
{
var self = this;
var tooltip = $('Page_tip');
var offsetX = 10;
var offsetY = -10;
function getSite(o)
{
var obj = o;
var objS = obj.offsetLeft;
while (obj != obj.offsetParent && obj.offsetParent)
{
obj = obj.offsetParent;
if (obj.tagName == 'span')
{
objS += obj.offsetLeft;
}
}
return objS;
}
Event.observe($('scr'), 'mousedown', mDown, false);
//Event.observe($('scr_2'), 'mousedown', mDown, false);
var flag = false;
function mDown()
{
flag = true;
if(window.event.srcElement.id != 'scr'
&& window.event.srcElement.id != 'scr_2')
{
$('scrfloat').style.left = $('scrfloat').offsetLeft;
//$('scrfloat_2').style.left = $('scrfloat').style.left;
}
else
{
$('scrfloat').style.left = (window.event.x - 5);
//$('scrfloat_2').style.left = $('scrfloat').style.left;
}
tooltip.style.display = 'block';
t = $('scrfloat').offsetLeft;
tooltip.innerHTML = self.countCurrPage(t);
tooltip.style.left = window.event.clientX + offsetX + 'px';
tooltip.style.top = window.event.clientY + offsetY + document.documentElement.scrollTop + 'px';
}
function mMove()
{
if(flag)
{
$('scrfloat').style.left = window.event.clientX - getSite($('scr')) - 5 + 'px';
//$('scrfloat_2').style.left = window.event.clientX - getSite($('scr')) - 5 + 'px';
}
if (parseInt($('scrfloat').style.left.replace('px', '')) > self.zoom_end)
{
$('scrfloat').style.left = self.zoom_end + 'px';
//$('scrfloat_2').style.left = $('scrfloat').style.left;
}
if (parseInt($("scrfloat").style.left.replace('px', '')) {
$('scrfloat').style.left = self.zoom_start + 'px';
//$('scrfloat_2').style.left = $('scrfloat').style.left;
}
if (flag)
{
t = $('scrfloat').offsetLeft;
tooltip.innerHTML = self.countCurrPage(t);
tooltip.style.left = window.event.clientX + offsetX + 'px';
tooltip.style.top = window.event.clientY + offsetY + document.documentElement.scrollTop + 'px';
}
}
function mUp()
{
if (flag)
{
t = $('scrfloat').offsetLeft;
self.setCurrPage(self.countCurrPage(t));
}
flag = false;
tooltip.style.display = 'none';
}
function mEnd()
{
window.event.returnValue = false;
}
window.document.onmousemove = mMove;
window.document.ondragstart = mEnd;
window.document.onmouseup = mUp;
Event.observe($('up'), 'click', mUpBtn, false);
Event.observe($('down'), 'click', mDownBtn, false);
function mUpBtn()
{
self.setCurrPage(self.currPage - 1, 1);
}
function mDownBtn()
{
self.setCurrPage(self.currPage + 1, 1);
}
},
nextPage: function()
{
if (this.currPage {
++this.currPage;
this.onPageChange();
}
},
previousPage: function()
{
if (this.currPage > 0)
{
--this.currPage;
this.onPageChange();
}
},
setCurrPage: function(page, move)
{
if (page > 0 && page {
this.currPage = page;
this.onPageChange();
if (move != null)
{
this.movePageControl(page);
}
}
},
onPageChange: function()
{
},
getCurrPage: function()
{
return this.currPage;
}
}
Comment.Iterator = {
getIndex: function(objComment)
{
var rangeList = new Array();
function getIndexId(reply_id)
{
return parseInt(reply_id / Comment.Configure.index_line_sum);
}
function getReplyPos(reply_id)
{
return (reply_id % Comment.Configure.index_line_sum);
}
if (objComment.order == 0)
{
var reply_start = (objComment.currPage - 1) * objComment.replyPerPage;
var start_index_id = getIndexId(reply_start);
var start_reply_id = getReplyPos(reply_start);
var currReply = 1;
var replySum = 0;
while (currReply++)
{
if (reply_start + currReply > objComment.totalReply)
{
rangeList.push({
url: Comment.UrlFactory.getIndexUrl(start_index_id),
range: Comment.UrlFactory.getRangeHeader(start_reply_id, currReply - replySum - 1, objComment.index_line_len)
});
break;
}
if (currReply == objComment.replyPerPage)
{
rangeList.push({
url: Comment.UrlFactory.getIndexUrl(start_index_id),
range: Comment.UrlFactory.getRangeHeader(start_reply_id, currReply - replySum, objComment.index_line_len)
});
break;
}
if (start_reply_id + currReply > Comment.Configure.index_line_sum)
{
rangeList.push({
url: Comment.UrlFactory.getIndexUrl(start_index_id),
range: Comment.UrlFactory.getRangeHeader(start_reply_id, currReply, objComment.index_line_len)
});
start_index_id++;
start_reply_id = 0;
replySum = currReply - 1;
}
}
}
else
{
var reply_start = objComment.totalReply - 1 - (objComment.currPage - 1) * objComment.replyPerPage;
var start_index_id = getIndexId(reply_start);
var start_reply_id = getReplyPos(reply_start);
var currReply = 1;
var replySum = 0;
while (currReply++)
{
if (reply_start - currReply {
rangeList.push({
url: Comment.UrlFactory.getIndexUrl(start_index_id),
range: Comment.UrlFactory.getRangeHeader(0, start_reply_id + 1, objComment.index_line_len)
});
break;
}
if (currReply == objComment.replyPerPage)
{
rangeList.push({
url: Comment.UrlFactory.getIndexUrl(start_index_id),
range: Comment.UrlFactory.getRangeHeader(start_reply_id - currReply + replySum + 1, currReply - replySum, objComment.index_line_len)
});
break;
}
if (start_reply_id - currReply {
rangeList.push({
url: Comment.UrlFactory.getIndexUrl(start_index_id),
range: Comment.UrlFactory.getRangeHeader(0, start_reply_id + 1, objComment.index_line_len)
});
start_index_id--;
start_reply_id = Comment.Configure.index_line_sum - 1;
replySum = currReply;
}
}
}
return rangeList;
}
}
/* 显示样式控制器 */
Comment.Control.Display = Class.create();
Comment.Control.Display.prototype = {
initialize: function()
{
}
}
/* 页面显示类 */
Comment.Page = new Object();
/* 评论页控制接口 */
Comment.Page.Base = {
changeMode: function(mode)
{
this.mode = mode;
this.totalReply = this.data_sum[mode];
this.totalPage = parseInt(this.totalReply / this.replyPerPage)
+ (this.totalReply % this.replyPerPage != 0 ? 1 : 0);
},
changeOrder: function(order)
{
if (this.order == order)
return;
this.order = order;
this.currPage = 1;
this.resetPageControl();
this.bindPageNav();
this.bindReplyList();
this.bindOrderControl();
},
bindOrderControl: function()
{
var self = this;
if (self.order == 0)
{
$('order_front').style.cursor = 'none';
$('order_front').style.color = '#000';
$('order_front').onclick = function(e)
{
return false;
}
$('order_desc').style.cursor = 'pointer';
$('order_desc').style.color = '#3B78AF';
$('order_desc').onclick = function()
{
self.changeOrder(1);
return false;
}
}
else if (self.order == 1)
{
$('order_front').style.cursor = 'pointer';
$('order_front').style.color = '#3B78AF';
$('order_front').onclick = function(e)
{
self.changeOrder(0);
return false;
}
$('order_desc').style.cursor = 'none';
$('order_desc').style.color = '#000';
$('order_desc').onclick = function()
{
return false;
}
}
},
bindRowsPerPage: function()
{
var self = this;
$A($('rows_page').getElementsByTagName('a')).each(function(button)
{
button.onclick = function()
{
self.replyPerPage = button.value;
self.currPage = 1;
self.resetPageControl();
self.bindPageNav();
self.bindReplyList();
return false;
}
});
},
selectTab: function(mode)
{
var self = this;
$A($('mode_tab').getElementsByTagName('p')).each(function(tab)
{
if (tab.value == mode)
{
$A($('mode_tab').getElementsByTagName('p')).each(function(t)
{
if (t.value != '')
{
t.className = 'none';
}
});
tab.className = 'c';
}
});
},
appendTab: function(option)
{
var pTab = $C('p');
pTab.innerHTML = option.title;
pTab.value = '';
$('mode_tab').appendChild(pTab);
pTab.onclick = function()
{
window.open(option.url);
}
return false;
},
bindTabControl: function()
{
var self = this;
$A($('mode_tab').getElementsByTagName('p')).each(function(tab)
{
var mode = tab.value;
if (mode != '')
{
tab.onclick = function()
{
$A($('mode_tab').getElementsByTagName('p')).each(function(t)
{
t.className = 'none';
});
this.className = 'c';
self.currPage = 1;
self.changeMode(mode)
self.resetPageControl();
self.bindPageNav();
self.bindReplyList();
return false;
}
}
});
},
bindPageRandom: function()
{
var self = this;
$A($('page_random', 'page_random_2')).each(function(button)
{
button.onclick = function()
{
if (self.totalPage == 1)
{
self.currPage = 1;
}
else
{
self.currPage = Math.floor(Math.random() * (self.totalPage + 1));
if (self.currPage == 0)
{
self.currPage = 1;
}
}
self.bindPageNav();
self.bindReplyList();
return false;

Artikel Panas

Alat panas Tag

Artikel Panas

Tag artikel panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Berapakah harga asal duit syiling Melania? Berapa banyak USD dijangka akan meningkat ke Melania

Perisian apa yang boleh membuat bitcoin? Cadangan Perisian Perdagangan 10 Bitcoin Teratas pada tahun 2025

GATEIO EXCHANGE Versi lama Gateio Exchange App Versi Lama Saluran Muat turun

Ringkasan Perisian Essential untuk Bulatan Mata Wang 2025

OUYI Masuk Login Rasmi 2025 OUYI OKX Platform Perdagangan Versi Rasmi

Platform Apl Perdagangan Top 10 Top menyenaraikan kedudukan terbaru 10 pertukaran mata wang teratas

Harga terbaru Bitcoin pada 2018-2024 USD
