Greasy Fork is available in English.
某些网站舍弃了传统的数字分页方式,而是采用滚动条向下滚动自动翻页,而当页数很多时,手动滚动非常麻烦,所以此脚本让它自动滚动。
当前为
// ==UserScript==
// @name 潜入底部
// @namespace http://greasyfork.icu/zh-CN/scripts/483583-%E6%BD%9C%E5%85%A5%E5%BA%95%E9%83%A8
// @version 1.1
// @description 某些网站舍弃了传统的数字分页方式,而是采用滚动条向下滚动自动翻页,而当页数很多时,手动滚动非常麻烦,所以此脚本让它自动滚动。
// @author 蚩尤后裔
// @homepage http://greasyfork.icu/zh-CN/scripts/483583-%E6%BD%9C%E5%85%A5%E5%BA%95%E9%83%A8
// @match http*://*/*
// @require http://libs.baidu.com/jquery/2.0.0/jquery.min.js
// @require https://cdn.bootcdn.net/ajax/libs/artDialog/7.0.0/dialog.js
// @grant GM_registerMenuCommand
// @license MIT
// ==/UserScript==
// 将本内容直接复制粘贴到油猴中即可使用.
(function () {
'use strict';
let v_timer_interval = 500; // 间隔多少时间(毫秒)向下滚动一次
let v_pre_scrollTop = -1; // 上一次滚动条距离顶部的高度
let v_count_tatol = 5; // 滚动条距离顶部的高度在连续 v_count 都没有再发生变化时,停止继续向下滚动.
let v_count = 0; // 次数统计,当值达到 v_count_tatol 时,将停止滚动
$(function () {
// 向原始页面添加倒计时元素
appendCountDownEle('flex-end');
// 自定义功能菜单
GM_registerMenuCommand("开始下潜", customSetting);
});
/**
* 滚动条向底部运动翻页
* timer01 :是定时调用自己的定时器,用于停止
*/
function toBottom(timer01) {
/**
* scrollTop:div 滚动条距离 div 上边缘的距离
* scrollHeight:div 内文档总高度(包括被隐藏的),当没有出现滚动条时,scrollHeight = height
* height:div 元素的高度,只与自己 height 属性有关,与滚动条无关
*/
let scrollTop = $("html").scrollTop();
let scrollHeight = $("html")[0].scrollHeight;
let height = $("html").height();
// 设置滚动条距离顶部的高度
$("html").scrollTop(scrollHeight);
// console.log("============ height=" + height, "scrollTop=" + scrollTop, "scrollHeight=" + scrollHeight);
if (v_pre_scrollTop != scrollTop) {
v_pre_scrollTop = scrollTop;
v_count = 0;
$('#wmx_countdown_msg_div').text(scrollTop);
} else {
$('#wmx_countdown_msg_div').text(v_count_tatol - v_count);
v_count++;
}
// console.log("===================== v_count_tatol=" + v_count_tatol + ", v_count=" + v_count + ", v_pre_scrollTop=" + v_pre_scrollTop);
if (v_count >= v_count_tatol) {
// console.log("============ 连续 " + v_count + " 次,内容都没有变化,不再继续向下滚动。");
clearInterval(timer01);
// 清空提示内容并进行隐藏
$('#wmx_countdown_msg_div').text('已经到达底部啦');
$('#wmx_countdown_msg_div').hide(5000);
}
}
/**
* 自定义设置菜单功能
*/
function customSetting() {
// 如果已经弹出了,则直接跳过,不再重复弹出
if ($("#wmx_dialog_div").length > 0) {
return;
}
let contentHtml = "<div id='wmx_dialog_div'><p>是否开始向下潜到底部?<p/></div>";
let wmx_dialog = dialog({
title: '提示',
// quickClose: true, // 点击空白处快速关闭
fixed: true,
content: contentHtml,
okValue: '确定',
ok: function () {
// 清空提示内容并进行展示
$('#wmx_countdown_msg_div').text('');
$('#wmx_countdown_msg_div').show();
let timer01 = setInterval(() => {
toBottom(timer01);
}, v_timer_interval);
},
cancelValue: '取消',
cancel: function () {}
});
// 弹框
wmx_dialog.showModal();
}
/**
* 向原始页面添加倒计时元素
*
* @param align_items :对齐方式
* * align-items: flex-start; 上对齐
* * align-items: center; 中对齐
* * align-items: flex-end; 下对齐
*/
function appendCountDownEle(msg) {
let contDownJQ = $(`<div id="wmx_countdown_msg_div">Test</div>`);
contDownJQ.css({
'position': 'fixed',
'top': 0,
'bottom': 0,
'left': 0,
'right': 0,
'display': 'flex'
});
contDownJQ.css({
'justify-content': 'center',
'align-items': 'flex-end'
});
contDownJQ.css({
'color': 'rgba(252,85,49, 0.5)',
'font-size': '5vw'
});
contDownJQ.css({
'pointer-events': 'none',
'z-index': '9999'
});
// 默认隐藏
contDownJQ.hide();
$('body').append(contDownJQ);
}
})();