// ==UserScript==
// @name CL1024
// @namespace CL1024
// @version 1.4.0
// @description 草榴社区 - 去广告插件屏蔽 「取消viidii跳转」「种子链接转化磁链接」「去帖子广告」「阅读帖子按楼数快速跳转楼层」「帖子内隐藏1024的回复」「今日帖子加亮」「超大图片根据屏幕缩放」「快捷键:详细页J/K 上/下一个回复,F6跳转技术讨论区,【.】返回顶部」
// @homepageURL https://greasyfork.org/zh-CN/scripts/1983-cl1024
// @copyright 2012-2022 rose1988c
// @require http://cdn.staticfile.org/jquery/1.8.3/jquery.min.js
// @match https://t66y.com/*
// @grant GM_addStyle
// ==/UserScript==
// @author rose1988c
// @date 2012.11.15
// @modified 2012.11.15 磁链接转化
// @modified 2012.11.28 去广告
// @modified 2012.12.23 帖子按楼跳转页面,方便用户在<求片求助贴>找片
// @modified 2013.01.05 按楼跳转页面,并'定位指定楼层'
// @modified 2013.01.17 隐藏1024的回复
// @modified 2013.03.11 今日帖子高亮 - 列表标题左边“.::”将改为“Today”
// @modified 2013.03.12 [暂失效]新增快捷键 - 打开帖子, __J__为下一个回复,__K__为上一个回复,点__.__返回顶部
// @modified 2013.03.18 修复bug - 回复后滚动条跳到顶部
// @1.1.4 2014.01.03 更新 - vivi跳转更新
// @1.1.5 2014-01-03 更新 - 修复点击[显示]无效
// @1.1.6 2014-01-03 BUG - 排除迅雷离线页面加载脚本。感谢@文科
// @1.1.7 2014-01-03 更新 - 超高清、大图根据屏幕尺寸缩放到适合屏幕大小
// @1.1.7 2014-01-03 BUG - 修复点击[显示]无效
// @1.1.8 2014-01-04 更新 - 新增点击下载种子
// @1.1.9 2014-1-14 增加统计
// @1.2.2 2014-1-14 更新匹配问题
// @1.2.3 2014-2-21 更新Chrome 插件失效问题。CL闹哪样?非得加载http://69.175.44.45:88/style.css?v=1.1 卡死了。
// @1.2.4 2014-2-21 防止69.175.44.45:88 css加载失败
// @1.2.5 2014-6-2 防止jquery加载失败
// @1.2.6 2014-6-2 userscripts加载失败
// @1.2.8 2014-6-17 修复偷懒造成的无法访问,js过大
// @1.2.9 2014-7-7 修复偷懒匹配网站问题
// @1.3.0 2015-9-6 修复反馈的bug,匹配网站、和第二页黑屏,增加chrome插件提示
// @1.3.1 2015-9-6 修改chrome发布网址
// @1.3.2 2015-9-10 去掉google统计
// @1.3.3 2017-1-19 fix
// @1.4.0 2022-09-28 “去广告插件屏蔽, 请等待10秒, 或将其关闭即刻恢复浏览” ? 吐了,麻烦做个好产品好吗?现在完全已经被其他社区(2048,sht,chlt, lwlt)给超过了
(function() {
if (document.title.indexOf('草榴') != -1) {
var CONSTANTS = {
'version': '1.3.1',
'localurl': window.location.href,
'localhost': window.location.host,
'regularVii': /www.viidii.com|www.viidii.info/,
'regularBlog': /htm_data|read.php/gi,
'regularList': /thread/gi,
'regularCat': /hash/gi,
'readurl': 'http://' + window.location.host + '/read.php',
'tips': '<div class="tips_container"><div class="close">X</div>去<input type="text" class="input-w80" placeholder="" id="wantlc" name="wantlc" />樓<input type="button" id="gotolc" value="Go" /> or <input type="button" id="goback" value="Back" onclick="history.go(-1);"><br /></div>',
'css': '.tips_container{position:fixed;bottom:2em;right:2em;color:green;opacity:0.4;background:#fff;padding:10px;z-index:99999}.tips_container:hover{opacity:0.9}.tips_container .close{position:absolute;top:0;right:0;color:red;cursor:pointer}.tips_container select, .tips_container select option{max-width:18em} input.input-w80 {background: none repeat scroll 0 0 #FFFFFF; border: 1px solid #B2CCCC; height: 18px;line-height: 18px;margin: 2px;padding: 0 3px;width:40px;}.hidden1024{height:36px;overflow:hidden;}',
'indexcss': '.posttoday{color:#f60;}'
};
var PLANETWORK = {
isPlanetHasWater: function() {
return CONSTANTS.regularBlog.test(CONSTANTS.localurl);
},
isPlanetHasPeople: function() {
return CONSTANTS.regularList.test(CONSTANTS.localurl);
},
KillVill: function(orginUrl) {
var decodeStr = /.*\?http:/g;
var decodeSig = /______/g;
var jsSuffix = '&z';
var htmlSuffix = '&z';
var returnSuffix = 'return false';
if (orginUrl.indexOf('viidii') != -1) {
var pureUrl = orginUrl.replace(decodeStr, 'http:').replace(decodeSig, '.').replace(jsSuffix, '').replace(htmlSuffix, '').replace(returnSuffix, '');
return pureUrl
} else {
return orginUrl;
}
},
Mercury: function() {
var self = this;
// 处理链接
var linkNode = $('a[href*=\'viidii\']');
if (linkNode.length != 0) {
linkNode.each(function() {
var orginLink = $(this).attr('href');
var pureLink = self.KillVill(orginLink);
$(this).attr('href', pureLink);
});
}
var linkNode = $('a[href*=\'hash\=\']');
if (linkNode.length != 0) {
linkNode.each(function() {
var orginLink = $(this).attr('href');
var tempLink = orginLink.split('hash=');
var hrefMagnet = 'magnet:?xt=urn:btih:' + tempLink[1].substring(3);
$(this).after('<a href="' + orginLink + '" target="_blank">下载种子</a>');
$(this).attr('href', hrefMagnet).text(hrefMagnet);
$(this).parent().addClass('link-braces');
});
}
},
Venus: function() {
$('img,input[type=image]').each(function() {
var thiz = $(this);
var thizonclick = thiz.attr('onclick');
if (CONSTANTS.regularVii.test(thizonclick)) {
var newonclick = thizonclick.replace('http://www.viidii.com/?', '').replace('http://www.viidii.info/?', '').replace(/______/g, '.').replace(/&z/g, '');
thiz.attr('onclick', newonclick).css('cursor', 'pointer');
}
if (thiz.parent().attr('class') != 'tac') {
var setwidth = parseInt(screen.width) - 395;
imgReady(thiz.attr('src'), function() {
var imgWidth = this.width;
var imgHeight = this.height;
if (imgWidth > setwidth) {
newWidth = setwidth;
newHeight = (setwidth / imgWidth) * imgHeight;
thiz.width(newWidth);
thiz.height(newHeight);
thiz.closest('td').width(setwidth + 16);
thiz.closest('div').width(setwidth + 16);
}
});
}
});
},
Earth: function() {
$('.sptable').remove();
},
Mars: function() {
var target = UTILS.getQueryStringByName('target');
$('a[class=s3]').each(function(i, val) {
var a_html = $(this).html();
if (a_html.indexOf('樓') > 0) {
var parentdiv = $(this).closest('div.t2');
a_html = a_html.replace(/[^0-9]/ig, '');
parentdiv.attr('id', 'post_' + parseInt(a_html));
}
});
UTILS.addCss(CONSTANTS.css);
UTILS.addDom(CONSTANTS.tips, function() {
return false;
});
UTILS.onlynum('wantlc');
// Bind Quick redirct by input Enter Key - cat
$('#wantlc').bind('keyup', function(event) {
if (event.keyCode == 13) {
$('#gotolc').click();
}
});
// $("#wantlc").focus(); 悲剧,先注释了。
$('.close').click(function() {
$(this).parent().remove();
});
$('#gotolc').click(function() {
var wantlc = parseInt($(this).prev().val()); // 想去的楼层 - cyw
var locationurlarray = UTILS.getQueryString(CONSTANTS.localurl);
if (wantlc != '') {
var urlgetpage = UTILS.getQueryStringByName('page');
var page = Math.ceil((wantlc + 1) / 25);
if (urlgetpage == page) {
UTILS.html_scrollTop_target('post_' + wantlc);
return false;
}
if (locationurlarray.length > 1) {
var rePage = /page/gi;
var reTarget = /target/gi;
for (var i = locationurlarray.length - 1; i >= 0; i--) {
// page and target
if (rePage.test(locationurlarray[i])) {
locationurlarray[i] = 'page=' + page;
}
if (reTarget.test(locationurlarray[i])) {
locationurlarray = UTILS.array_prototype_del(locationurlarray, i);
}
}
locationurlarray = locationurlarray.join('&');
window.location.href = CONSTANTS.readurl + '?' + locationurlarray + '&target=post_' + wantlc;
// window.open();
return false;
} else {
locationurlarray = CONSTANTS.localurl.split('/'); // Get tid
var tid = locationurlarray.pop().split('.');
if (typeof(tid[0]) != 'undefined') {
tid = tid[0];
window.location.href = CONSTANTS.readurl + '?tid=' + tid + '&page=' + page + '&target=post_' + wantlc;
return false;
}
}
}
});
UTILS.html_scrollTop_target(target);
//hide1024
$('div.t2').each(function() {
var thiz = $(this);
var html = thiz.children().find('.tpc_content').html();
var thiz_id = thiz.attr('id');
if (html == '1024') {
thiz.addClass('hidden1024');
var tiptop = thiz.find('.tiptop');
var thiz_lc = thiz.find('.tipad > span:last').children().clone();
tiptop.append('<a class="show1024" class="act-show-1024" rel="' + thiz_id + '" style="color:green" href="javascript:void(0);">显示</a> | ').append(thiz_lc);
}
});
$('.show1024').click(function() {
var thiz_id = $(this).attr('rel');
$('#' + thiz_id).toggleClass('hidden1024');
});
//快捷键
$(document).keydown(function(e) {
if (e.keyCode == KEY_ASCLL.j) {
UTILS.shortcut_key_current();
UTILS.shortcut_key_jump(true, 'current-comment');
return false;
}
if (e.keyCode == KEY_ASCLL.k) {
UTILS.shortcut_key_current();
UTILS.shortcut_key_jump(false, 'current-comment');
return false;
}
if (e.keyCode == KEY_ASCLL.period) {
UTILS.html_scrollTop_target('top');
return false;
}
if (e.keyCode == KEY_ASCLL.f6) {
window.location.href = '/' + 'thread0806.php?fid=7';
return false;
}
});
},
Jupiter: function() {
// today 样式
UTILS.addCss(CONSTANTS.indexcss);
var today = new Date();
today = UTILS.data_format(today, 'yyyy-MM-dd');
$('.tr3').each(function() {
var tr3 = $(this);
var postdata = $(this).find('a[class=bl]').next();
if (postdata.text() == today) {
postdata.addClass('posttoday');
tr3.find('td:first').children().html('Today').addClass('posttoday').css('border-bottom', '1px dotted tomato');
}
});
},
Uranus: function() {},
Neptune: function() {},
Pluto: function() {
// GM_addStyle function is not existed in chrome 27
var GM_addStyle = GM_addStyle ||
function(css) {
var style = document.createElement('style');
style.type = 'text/css';
style.appendChild(document.createTextNode(css));
document.getElementsByTagName('head')[0].appendChild(style);
};
// 增加自定义样式
GM_addStyle('\
body {\
font-family: Tahoma;\
font-size: 12px;\
background: #F9F9EC;\
}\
h1,h2,h3,h4,h5,h6,form,body {\
padding: 0;\
margin: 0;\
}\
td,th,div {\
word-break: break-all;\
word-wrap: break-word;\
}\
table {\
empty-cells: show;\
}\
img {\
border: 0;\
}\
h3,h2 {\
display: inline;\
font-size: 14px;\
}\
h3 {\
font-weight: normal;\
}\
h2 a,h3 a {\
color: #000;\
}\
h4 {\
margin: 20px 0 10px;\
font-size: 1.1em;\
}\
textarea,input,select {\
font: 12px Arial;\
padding: 1px 3px 0 3px;\
vertical-align: middle;\
margin-bottom: 1px;\
}\
.c {\
clear: both;\
height: 0;\
font: 0/0 Arial;\
}\
.b {\
font-weight: bold;\
}\
.tal {\
text-align: left;\
}\
.tac {\
text-align: center;\
}\
.tar {\
text-align: right;\
}\
.fr {\
float: right;\
}\
.fl {\
float: left;\
}\
a {\
text-decoration: none;\
color: #2f5fa1;\
}\
a:hover {\
text-decoration: underline;\
}\
.f9 {\
font-size: 11px;\
}\
.f10 {\
font-size: 11px;\
}\
.f12 {\
font-size: 12px;\
}\
.f14 {\
font-size: 14px;\
}\
.fn,.fn a {\
font-weight: normal;\
}\
.s1 {\
color: #008000;\
}\
.s2 {\
color: #984B98;\
}\
.s3 {\
color: #FA891B;\
}\
.s4 {\
color: #0033FF;\
}\
.s5 {\
color: #659B28;\
}\
.gray {\
color: #818a89;\
}\
.f_one,.t_one,.r_one {\
background: #F9F9EC;\
}\
.f_two,.t_two,.r_two {\
background: #F4FBFF;\
}\
textarea,input,select {\
font: 12px Arial;\
padding: 1px 3px 0 3px;\
vertical-align: middle;\
margin-bottom: 1px;\
}\
select {\
border: solid 1px #D4EFF7;\
}\
.btn {\
background: #A6CBE7;\
color: #004c7d;\
border-width: 1px;\
padding-left: 15px;\
padding-right: 15px;\
vertical-align: middle;\
}\
.input {\
border: solid 1px #A6CBE7;\
padding: 2px 0px 2px 1px;\
font-size: 1.0em;\
vertical-align: middle;\
}\
form {\
display: inline;\
}\
textarea {\
border: solid 1px #A6CBE7;\
}\
#header {\
width: 98%;\
margin: auto;\
}\
.toptool {\
border-bottom: 1px solid #daebcd;\
}\
.toptool span {\
padding: 1px 5px;\
line-height: 150%;\
}\
.banner {\
padding-right: 3%;\
background: #0F7884;\
}\
.banner img {\
vertical-align: middle;\
}\
.t {\
border: 1px solid #A6CBE7;\
margin: 0px auto 8px;\
}\
.t table {\
border: 1px solid #fff;\
margin: 0 auto;\
width: 99.98%;\
}\
.t2 {\
border-top: #A6CBE7 1px solid;\
margin: 0px auto 5px;\
}\
.t3 {\
margin: auto;\
}\
.t4 {\
padding: 1px 0 1px 1px;\
}\
.h {\
border-bottom: 4px solid #dbecF4;\
background: #B1D3E0;\
text-align: left;\
color: #004c7d;\
padding: 5px 7px 3px 7px;\
}\
.h span {\
font-weight: normal;\
}\
.h h2 {\
font-weight: bold;\
}\
.h a {\
font-family: Arial;\
color: #004c7d;\
}\
.h span a,.h span {\
color: #5599bb;\
}\
.h a.a2 {\
margin-left: 12px;\
}\
.tr1 th {\
padding: 5px 10px;\
text-align: left;\
vertical-align: top;\
font-weight: normal;\
}\
.tr1 td.td1 {\
border: 1px solid #D4EFF7;\
}\
.tr2 {\
background: #f3f8ef;\
color: #659b28;\
}\
.tr2 td,.tr2 th {\
line-height: 21px;\
border-bottom: 1px solid #daebcd;\
padding: 0px 6px 0px;\
border-top: 1px solid #A6CBE7;\
}\
.tr2 a {\
color: #659b28;\
margin: 2px;\
}\
.tr3 td,.tr3 th {\
border-bottom: 1px solid #D4EFF7;\
padding: 5px 8px;\
}\
.tr3 th {\
text-align: left;\
font-weight: normal;\
}\
.tr4 {\
background: #B1D3E0;\
color: #004c7d;\
}\
.tr4 td {\
padding: 4px 10px;\
}\
.tr td,.tr th {\
padding: 2px;\
}\
.tpc_content {\
font-size: 14px;\
font-family: Arial;\
padding: 0 2% 0 0.5%;\
margin: 0 0 2%;\
}\
.tips {\
background: #F4FBFF;\
border: #D4EFF7 1px solid;\
padding: 5px;\
margin: 0 1% 1% 0;\
float: left;\
text-align: center;\
}\
.tips li {\
list-style: none;\
padding: 0 5px;\
float: left;\
overflow: hidden;\
white-space: nowrap;\
}\
.tiptop {\
border-bottom: 1px solid #D4EFF7;\
padding: 0 0 5px 0;\
vertical-align: middle;\
}\
.tipad {\
border-top: 1px solid #D4EFF7;\
margin: 10px 0 0;\
padding: 5px 0 0;\
}\
.quote {\
font-size: 70%;\
color: #004c7d;\
margin: 2px;\
padding: 0;\
}\
blockquote {\
width: 92%;\
font-size: 85%;\
color: #81888c;\
border: 1px solid #D4EFF7;\
border-left-width: 3px;\
padding: 5px;\
margin: 0 0 1%;\
}\
.menu {\
position: absolute;\
background: #fff;\
border: 1px solid #A6CBE7;\
}\
.menu td, .menu li,.menu ul {\
background: #B1D3E0;\
padding: 0;\
margin: 0;\
}\
.menu li {\
list-style: none;\
}\
.menu a {\
display: block;\
padding: 3px 15px 3px 15px;\
}\
.menu a:hover {\
background: #2f5fa1;\
text-decoration: none;\
color: #fff;\
}\
.menu ul.ul1 li a {\
display: inline;\
padding: 0;\
}\
.pages {\
margin: 3px 0;\
font: 11px/12px Tahoma;\
}\
.pages * {\
vertical-align: middle;\
}\
.pages a {\
padding: 1px 4px 1px;\
border: 1px solid #A6CBE7;\
margin: 0 1px 0 0;\
text-align: center;\
text-decoration: none;\
font: normal 12px/14px verdana;\
}\
.pages a:hover {\
border: #659b28 1px solid;\
background: #f3f8ef;\
text-decoration: none;\
color: #004c7d;\
}\
.pages input {\
margin-bottom: 0px;\
border: 1px solid #659b28;\
height: 15px;\
font: bold 12px/15px Verdana;\
padding-bottom: 1px;\
padding-left: 1px;\
margin-right: 1px;\
color: #659b28;\
}\
#footer {\
width: 98%;\
text-align: right;\
border-top: 2px solid #dbecF4;\
margin: auto;\
padding: 5px 0;\
border-bottom: #f3f8ef 12px solid;\
}\
#main {\
width: 98%;\
margin: auto;\
}\
.tr3 td,.tr3 th {\
border-right: 1px solid #D4EFF7;\
}\
.y-style {\
text-align: center;\
}\
.t table {\
border: 0;\
width: 100%;\
}\
.tr1 th {\
border-right: 1px solid #D4EFF7;\
}\
.tr1 td.td1 {\
border-left: 0;\
}\
.t {\
padding: 1px;\
}\
.signature {\
height: expression(this.scrollHeight>parseInt(this.currentStyle.maxHeight)?this.currentStyle.maxHeight:auto);\
}\
.sptable h4 {\
display:none;\
margin: 0em 0 -.1em;\
color: #6666FF;\
font-size: 14px;\
padding-bottom: 8px;\
}\
.sptable a {\
display:none;\
color: #339900;\
}\
.sptable h4:hover {\
display:none;\
text-decoration: underline;\
}\
.sptable td {\
display:none;\
cursor: pointer;\
text-align: left;\
}\
');
},
OpenBlock:function(){
var html = $('.tpc_content:eq(0)').html();
var openblcokv = setInterval(()=>{
var temp = $('.tpc_content:eq(0)').html();
if (temp.length <= 100) {
$('.tpc_content:eq(0)').html(html);
clearInterval(openblcokv)
}
}, 1000);
},
Solar: function() {
var isPlanetHasWater = this.isPlanetHasWater();
var isPlanetHasPeople = this.isPlanetHasPeople();
if (isPlanetHasWater) {
this.Mercury();
this.Venus();
this.Mars();
this.Earth();
this.Pluto();//样式
this.OpenBlock();
} else if (isPlanetHasPeople) {
this.Jupiter();
this.Earth();
this.Pluto();//样式
UTILS.addDomObj('<tr align="center" class="tr3 t_one"><td><a title="下载chrome插件" href="http://cl.aacc.in/" target="_blank" class="posttoday hightLight hightLightFirst" style="border-bottom-width: 1px; border-bottom-style: dotted; border-bottom-color: rgb(255, 99, 71);">Today</a></td>\
<td style="text-align:left;padding-left:8px" id=""> \
<h3><a style="color:green;" href="http://cl.aacc.in/" target="_blank" id="">rose1988c推出更强大的CL1024谷歌插件,欢迎下载</a></h3> \
<font color="green">[積分+999]</font><i style="color:red">new</i></td>\
<td class="tal y-style"><a href="http://cl.aacc.in/" class="bl">rose1988c</a>\
<div class="f10">2015-09-06</div></td>\
<td class="tal f10 y-style">MarkTop</td>\
<td class="tal y-style"><a href="http://cl.aacc.in/" class="f10"> 2015-09-06 11:38 </a><br>by: rose1988c</td>\
</tr>', $('.tr3:first'));
} else {
return false;
}
}
};
// ======================================================================
// Helper
// ======================================================================
// hot key
var KEY_ASCLL = {
// Shift key, ⇧
'⇧': 16,
'shift': 16,
// CTRL key, on Mac: ⌃
'⌃': 17,
'ctrl': 17,
// ALT key, on Mac: ⌥ (Alt)
'⌥': 18,
'alt': 18,
'option': 18,
// META, on Mac: ⌘ (CMD), on Windows (Win), on Linux (Super)
'⌘': 91,
'meta': 91,
'cmd': 91,
'super': 91,
'win': 91,
// Backspace key, on Mac: ⌫ (Backspace)
'⌫': 8,
'backspace': 8,
// Tab Key, on Mac: ⇥ (Tab), on Windows ⇥⇥
'⇥': 9,
'⇆': 9,
'tab': 9,
// Return key, ↩
'↩': 13,
'return': 13,
'enter': 13,
'⌅': 13,
// Pause/Break key
'pause': 19,
'pause-break': 19,
// Caps Lock key, ⇪
'⇪': 20,
'caps': 20,
'caps-lock': 20,
// Escape key, on Mac: ⎋, on Windows: Esc
'⎋': 27,
'escape': 27,
'esc': 27,
// Space key
'space': 32,
// Page-Up key, or pgup, on Mac: ↖
'↖': 33,
'pgup': 33,
'page-up': 33,
// Page-Down key, or pgdown, on Mac: ↘
'↘': 34,
'pgdown': 34,
'page-down': 34,
// END key, on Mac: ⇟
'⇟': 35,
'end': 35,
// HOME key, on Mac: ⇞
'⇞': 36,
'home': 36,
// Insert key, or ins
'ins': 45,
'insert': 45,
// Delete key, on Mac: ⌫ (Delete)
'del': 45,
'delete': 45,
// Left Arrow Key, or ←
'←': 37,
'left': 37,
'arrow-left': 37,
// Up Arrow Key, or ↑
'↑': 38,
'up': 38,
'arrow-up': 38,
// Right Arrow Key, or →
'→': 39,
'right': 39,
'arrow-right': 39,
// Up Arrow Key, or ↓
'↓': 40,
'down': 40,
'arrow-down': 40,
// odities, printing characters that come out wrong:
// Num-Multiply, or *
'*': 106,
'star': 106,
'asterisk': 106,
'multiply': 106,
// Num-Plus or +
'+': 107,
'plus': 107,
// Num-Subtract, or -
'-': 109,
'subtract': 109,
// ';': 186, //???
// = or equals
'=': 187,
'equals': 187,
// Comma, or ,
',': 188,
'comma': 188,
// '-': 189, //???
// Period, or ., or full-stop
'.': 190,
'period': 190,
'full-stop': 190,
// Slash, or /, or forward-slash
'/': 191,
'slash': 191,
'forward-slash': 191,
// Tick, or `, or back-quote
'`': 192,
'tick': 192,
'back-quote': 192,
// Open bracket, or [
'[': 219,
'open-bracket': 219,
// Back slash, or \
'\\': 220,
'back-slash': 220,
// Close backet, or ]
']': 221,
'close-bracket': 221,
// Apostraphe, or Quote, or '
'\'': 222,
'quote': 222,
'apostraphe': 222
};
// To minimise code bloat, add all of the NUMPAD 0-9 keys in a loop
var i = 95,
n = 0;
while (++i < 106) {
KEY_ASCLL['num-' + n] = i;
++n;
}
// To minimise code bloat, add all of the top row 0-9 keys in a loop
var i = 47,
n = 0;
while (++i < 58) {
KEY_ASCLL[n] = i;
++n;
}
var i = 111,
n = 1;
while (++i < 136) {
KEY_ASCLL['f' + n] = i;
++n;
}
var i = 64;
while (++i < 91) {
KEY_ASCLL[String.fromCharCode(i).toLowerCase()] = i;
}
//hotkey
var imgReady = (function() {
var list = [],
intervalId = null,
// 用来执行队列
tick = function() {
var i = 0;
for (; i < list.length; i++) {
list[i].end ? list.splice(i--, 1) : list[i]();
}!list.length && stop();
},
// 停止所有定时器队列
stop = function() {
window.clearInterval(intervalId);
intervalId = null;
};
return function(url, ready, load, error) {
var onready, width, height, newWidth, newHeight, img = new Image();
img.src = url;
// 如果图片被缓存,则直接返回缓存数据
if (img.complete) {
ready.call(img);
load && load.call(img);
return;
}
width = img.width;
height = img.height;
// 加载错误后的事件
img.onerror = function() {
error && error.call(img);
onready.end = true;
img = img.onload = img.onerror = null;
};
// 图片尺寸就绪
onready = function() {
newWidth = img.width;
newHeight = img.height;
if (newWidth !== width || newHeight !== height ||
// 如果图片已经在其他地方加载可使用面积检测
newWidth * newHeight > 1024) {
ready.call(img);
onready.end = true;
}
};
onready();
// 完全加载完毕的事件
img.onload = function() {
// onload在定时器时间差范围内可能比onready快
// 这里进行检查并保证onready优先执行
!onready.end && onready();
load && load.call(img);
// IE gif动画会循环执行onload,置空onload即可
img = img.onload = img.onerror = null;
};
// 加入队列中定期执行
if (!onready.end) {
list.push(onready);
// 无论何时只允许出现一个定时器,减少浏览器性能损耗
if (intervalId === null) intervalId = setInterval(tick, 40);
}
};
})();
// UTILS Func
var UTILS = {
addCss: function(str) {
var style = document.createElement('style');
style.textContent = str;
document.head.appendChild(style);
},
getScript: function(src) {
var script = document.createElement('script');
script.src = src;
document.body.appendChild(script);
},
addScript: function(js) {
var oHead = document.getElementsByTagName('HEAD')[0],
oScript = document.createElement('script');
oScript.type = 'text/javascript';
oScript.text = js;
oHead.appendChild(oScript);
},
addDom: function(html, callback) {
var div = document.createElement('div');
div.innerHTML = html;
callback.call(div, div);
document.body.appendChild(div);
},
addDomObj: function(html, obj) {
obj.before(html);
},
validate: function(url) {
var magnetPattern = /magnet:\?xt=urn:btih:([a-zA-Z0-9]+)/;
if (magnetPattern.test(url)) {
return url.match(magnetPattern)[0];
}
return url;
},
getCookie: function(ae) {
return (document.cookie.match(new RegExp('(^' + ae + '| ' + ae + ')=([^;]*)')) == null) ? '' : RegExp.$2
},
proxy: function(fn) {
var script = document.createElement('script');
script.textContent = '(' + fn.toString() + ')(window);';
document.body.appendChild(script);
},
isArray: function(o) {
return Object.prototype.toString.call(o).indexOf('Array') !== -1;
},
array_prototype_del: function(array, n) { // n表示第几项,从0开始算起。
if (n < 0) { // 如果n<0,则不进行任何操作。
return array;
} else {
return array.slice(0, n).concat(array.slice(n + 1, array.length));
}
/*
* concat方法:返回一个新数组,这个新数组是由两个或更多数组组合而成的。
* 这里就是返回this.slice(0,n)/this.slice(n+1,this.length)
* 组成的新数组,这中间,刚好少了第n项。 slice方法: 返回一个数组的一段,两个参数,分别指定开始和结束的位置。
*/
},
onlynum: function(input) {
$('#' + input).keyup(function(e) {
$(this).val($(this).val().replace(/[^0-9)]+/, ''));
}).focus(function() {
$(this).val($(this).val().replace(/[^0-9]+/, ''));
});
},
getQueryString: function(url) {
var url = url || location.search;
var result = url.match(new RegExp('[\?\&][^\?\&]+=[^\?\&]+', 'g'));
if (result == null) return new Array();
for (var i = 0; i < result.length; i++) {
result[i] = result[i].substring(1);
}
return result;
},
getQueryStringByName: function(name) {
var result = location.search.match(new RegExp('[\?\&]' + name + '=([^\&]+)', 'i'));
if (result == null || result.length < 1) {
return '';
}
return result[1];
},
getQueryStringByIndex: function(index) {
if (index == null) {
return '';
}
var queryStringList = getQueryString();
if (index >= queryStringList.length) {
return '';
}
var result = queryStringList[index];
var startIndex = result.indexOf('=') + 1;
result = result.substring(startIndex);
return result;
},
html_scrollTop_target: function() {
var target = arguments[0] || 0;
var timeset = arguments[1] || 500;
if (target == '0') {
return false;
}
if (target == 'top') {
$('html,body').animate({
scrollTop: 0
}, timeset);
return false;
}
if (target.length > 2) {
var $target = $('#' + target);
if ($target.length > 0) {
var targetOffset = $target.offset().top;
$('html,body').animate({
scrollTop: targetOffset
}, timeset);
}
return false;
}
},
/**
* js时间对象的格式化; this new Data() eg:format="yyyy-MM-dd hh:mm:ss";
*/
data_format: function(data, format) {
var o = {
'M+': data.getMonth() + 1,
// month
'd+': data.getDate(),
// day
'h+': data.getHours(),
// hour
'm+': data.getMinutes(),
// minute
's+': data.getSeconds(),
// second
'q+': Math.floor((data.getMonth() + 3) / 3),
// quarter
'S': data.getMilliseconds() // millisecond
}
if (/(y+)/.test(format)) {
format = format.replace(RegExp.$1, (data.getFullYear() + '').substr(4 - RegExp.$1.length));
}
for (var k in o) {
if (new RegExp('(' + k + ')').test(format)) {
format = format.replace(RegExp.$1, RegExp.$1.length == 1 ? o[k] : ('00' + o[k]).substr(('' + o[k]).length));
}
}
return format;
},
shortcut_key_jump: function(isDown, currentclass) {
var className = currentclass;
var current = $('.' + className).first(),
next = undefined;
next = isDown ? current.next().next('.t2') : current.prev().prev('.t2');
if (next && next.length) {
current.removeClass(className);
next.addClass(className);
// var next_div = next[0];
UTILS.html_scrollTop_target(next.attr('id'), 300);
return false;
}
},
shortcut_key_current: function() {
var _class = arguments[0] || '.t2';
var _scrollTop = $(document).scrollTop();
if ($('.current-comment').length > 0) {
return;
}
if (_scrollTop == 0) {
$(_class).first().addClass('current-comment');
} else {
$(_class).each(function() {
if ($(this).offset().top > _scrollTop && $('.current-comment').length == 0) {
$(this).addClass('current-comment');
return;
} else {
$(this).removeClass('current-comment');
}
});
}
}
};
//太阳系行星工作
PLANETWORK.Solar();
}
})();