// ==UserScript==
// @name 滑动器6
// @namespace your-namespace
// @version 1.0
// @description 控制网页自动向上滑动的速度
// @author Your Name
// @match http://www.htmanga3.top/*
// @grant none
// ==/UserScript==
if (location.href.indexOf('https://www.baidu.com/s') == 0 || location.href.indexOf('http://www.baidu.com/s') == 0) {
var jq = jQuery.noConflict();
Compatible(jq);
var chaoxing = false;
} else if (location.href.indexOf('chaoxing') != -1) {
var jq = jQuery.noConflict();
Compatible(jq);
var chaoxing = true;
} else {
Compatible(jQuery);
var chaoxing = false;
}
function Compatible(jq) {
var box = jq('<div class="move-box"><input type="number" class="move-val" value="1" title="速度"/><p class="start" title="开始/暂停">▶</p><p class="reverse" title="反方向">▼</p></div>');
jq('body').append(box);
(function () {
jq('.move-box').css({
'width': '40px',
'height': '90px',
'background': '#fff',
'box-shadow': '0 0 4px 0 #ccc',
'border-radius': '8px',
'user-select': 'none',
'overflow': 'hidden',
'position': 'fixed',
'top': '80px',
'left': '4px',
'z-index': 99999999
});
jq('.move-val').css({
'width': '100%',
'height': '30px',
'padding': 0,
'color': '#000',
'border': 'none',
'outline': 'none',
'font-size': '18px',
'text-align': 'center'
})
jq('.start').css({
'margin': 0,
'width': '100%',
'height': '30px',
'line-height': '30px',
'text-align': 'center',
'background': 'red',
'color': '#fff',
'font-size': '20px',
'cursor': 'pointer'
})
jq('.reverse').css({
'margin': 0,
'width': '100%',
'height': '30px',
'line-height': '30px',
'text-align': 'center',
'color': '#ccc',
'cursor': 'pointer'
})
}())
var elinput = document.getElementsByClassName('move-val')[0],
elstart = document.getElementsByClassName('start')[0],
elreverse = document.getElementsByClassName('reverse')[0],
speed = 1,
isMove = false,
isHide = true,
flag = false,
lookTop = 0,
timers = null,
scrollTimer = null; // 新增定时器
// Listen for double tap events
var clickCount = 0;
var lastClickTime, timeoutId;
function handleClick() {
clickCount++;
if (clickCount === 1) {
lastClickTime = new Date().getTime();
timeoutId = setTimeout(function () {
clickCount = 0;
}, 300);
} else if (clickCount === 2) {
clearTimeout(timeoutId);
clickCount = 0;
elstart.click(); // trigger scrolling function
}
}
window.addEventListener('touchstart', handleClick);
elinput.oninput = setIn;
function setIn() {
if (this.value > 10) {
this.value = 10;
}
if (this.value < -10) {
this.value = -10;
}
if (this.value == '') {
this.value = 0;
}
speed = Number(this.value);
speed < 0 ? elreverse.innerText = '▲' : elreverse.innerText = '▼';
}
elstart.onclick = function () {
if (isMove) {
this.innerText = '▶';
flag = false;
isMove = false;
isHide = true;
clearTimeout(scrollTimer); // 停止滚动定时器
} else {
this.innerText = '◉';
flag = true;
isMove = true;
isHide = false;
move(); // 开始滚动
}
hideShow();
}
elreverse.onclick = function () {
speed = -speed;
speed < 0 ? this.innerText = '▲' : this.innerText = '▼';
}
function move() {
if (flag) {
var imglook = jq('.imglook');
if (imglook.length === 0) {
window.scrollBy(0, speed);
if (chaoxing && jq(window).height() + jq(window).scrollTop() >= jq(document).height() - 180) {
if ($('#loadbutton').length == 1) {
clearTimeout(timers);
$('#loadbutton').click();
timers = setTimeout(() => {
isMove ? '' : elstart.click()
}, 200)
}
}
if (jq(window).height() + jq(window).scrollTop() >= jq(document).height() - 2 || jq(window).scrollTop() == 0) {
elstart.innerText = '▶';
flag = false;
isMove = false;
isHide = true;
hideShow();
return; // 结束滚动
}
} else {
// 超新课程资料文件预览
var loopNum = 0
lookTop = imglook[0].scrollTop
imglook[0].scrollBy(0, speed)
function loopTest() {
loopNum++
setTimeout(() => {
if (imglook[0].scrollTop === lookTop) {
loopTest()
if (loopNum > 6) {
elstart.innerText = '▶';
flag = false;
isMove = false;
isHide = true;
hideShow();
return; // 结束滚动
}
}
}, 200)
}
if (imglook[0].scrollTop === lookTop) {
loopTest()
}
}
// 滚动结束后停止1秒,再次启动滚动
clearTimeout(scrollTimer);
scrollTimer = setTimeout(function () {
move();
}, 2000);
}
}
jq(document).keydown((e) => {
var event = e || window.event;
if (event.keyCode == 32) {
elstart.click();
return false;
}
if (event.keyCode == 38) {
elinput.value++;
}
if (event.keyCode == 40) {
elinput.value--;
}
setIn.call(elinput);
})
// 隐藏
hideShow()
function hideShow() {
// if(!isHide) return;
var timer2 = null;
function hide() {
jq('.move-box').stop().animate({
'left': '-30px'
}, 400)
}
timer2 = setTimeout(hide, 6000);
jq('.move-box').hover(function () {
// if(!isHide) return;
clearInterval(timer2);
jq(this).stop().animate({
'left': '4px'
}, 600)
}, function () {
// if(!isHide) return;
timer2 = setTimeout(hide, 6000);
})
}
}