12345下一页
返回列表 发新帖

【论坛脚本】论坛阅读辅助工具-自动下一页

  [复制链接]

54

主题

3588

回帖

1万

积分

博士生

Rank: 7Rank: 7Rank: 7

金币
789
好评
190
信誉
180

MT论坛新人MT论坛最佳新人MT论坛帅哥考神MT论坛活跃会员挂机大佬

发表于 2025-11-16 12:42:00 | 显示全部楼层 | 阅读模式  来自 陕西
本帖最后由 青春向上 于 2026-1-4 14:19 编辑

链接
github:qcxs/mtbbs: 自用mt论坛脚本
若无法访问请寻找镜像源或qcxs/mtbbs CDN by jsDelivr
包含文件
communityAutoNextPage.js
介绍
集众多页面为一体,统一使用page参数控制分页。滚动加载下一页,手动加载上一页,页码跳转,地址栏无刷新更新。已适配:社区、导读、搜索、个人空间帖子/回复/留言、帖子评论、我的好友、积分明细、消息提醒。

怕你们分不清适配了哪些页面,给你们贴几张图片:


社区包含:版本发布、插件交流、建议反馈、逆向交流、玩机交流、编程开发、求助问答、综合交流、休闲灌水、官方公告、申诉举报、站务专区
导读:(注意:首页下滑也算导读)


个人空间内帖子:(右下角我的-我的帖子)

阅读别人也算:

我的好友页面:

总结:会分页的页面都可以自动阅读下一页。
但论坛之大,总有一些疏忽,留着以后更新。

使用教程
方案1:油猴添加新脚步:全选-粘贴-保存

方案2:直接以js形式执行即可,适合嵌入论坛app内。

代码均带有注释,可ai分析。

主要功能介绍
1,只适配手机端自动展开下一页,显示第n页标识,拥有重试机制,主要功能正常使用。
评论自动展开:

2,记录已阅读页码,例如阅读第10页时,修改网址为第9页,可避免因误操作刷新导致阅读进度丢失

思路来源于:WhiteSevs/TamperMonkeyScript: 自用油猴脚本

这里有个细节:
为什么保存上一页而不是当前页?举例:刚刚阅读第10页不久
因为浏览器有自动记忆滚动条功能,如果保存第10页,刷新后由于记忆滚动条,会自动滚动到页面底部,此时相当于把第10页阅读完了,直接又加载第11页,万一又刷新,此时又滚动并加载第12页,死循环。(虽然也可以禁用浏览器记忆滚动条,但此功能还是很实用的,保留)
相比之下,记录第9页,由于滚动,会加载第10页,此时可继续阅读第10页(虽然第10页进度丢失,但可以接受

那为什么会“滚动到页面底部”呢?不应该刚好滚动至上一个阅读位置吗?
因为论坛有阻止缓存机制,当你点击一个帖子后,返回时,它只会刷新当前页,之前的所有下一页数据全部丢失。
于是假设你已阅读许多下一页内容,此时滚动条会非常长,这时刷新按理说应该滚动到原位置,但原位置的帖子因为“阻止缓存机制”丢失了,那浏览器只会滚动到页面底部。

综上经过一阵思考,最终妥协为此方案。

3,核心科技:点击帖子直接在新标签中打开,避免因返回触发刷新

点击帖子标题或内容,会在新标签中打开,其余操作逻辑不变。(应该没人点那个评论吧?)
  1. // 定义独立函数,方便后续解除拦截(如需)
  2.                 function handleCaptureClick(e) {
  3.                     // 1. 判断点击元素是否有「class为forumlist_li的li父元素」(包括自身)
  4.                     const forumlistDiv = e.target.closest('div.mmlist_li_box');
  5.                     if (!forumlistDiv) {
  6.                         return; // 无目标父元素,不拦截,执行原点击行为
  7.                     }

  8.                     // 2. 找到该div下所有a标签,遍历匹配链接
  9.                     const targetLinks = forumlistDiv.querySelectorAll('a');
  10.                     let matchedUrl = null;
  11.                     // 正则表达式:匹配 thread-数字-任意字符.html 格式(支持 thread-xxxx-1-1.html 等变体)
  12.                     const threadReg = /thread-\d+.*\.html$/i;

  13.                     for (const link of targetLinks) {
  14.                         const href = link.getAttribute('href') || '';
  15.                         // 3. 正则匹配目标链接格式
  16.                         if (threadReg.test(href)) {
  17.                             matchedUrl = href;
  18.                             break; // 找到第一个匹配链接即可
  19.                         }
  20.                     }

  21.                     // 4. 有匹配链接:新标签打开,拦截原行为;无匹配:不拦截
  22.                     if (matchedUrl) {
  23.                         e.preventDefault(); // 阻止原跳转/默认行为
  24.                         e.stopPropagation(); // 阻止事件传播(避免其他脚本触发)
  25.                         e.stopImmediatePropagation(); // 阻止同阶段其他监听者
  26.                         window.open(matchedUrl, '_blank'); // 新标签打开页面
  27.                     }
  28.                 }

  29.                 // 捕获阶段绑定全局click事件(关键:第三个参数true)
  30.                 document.addEventListener('click', handleCaptureClick, true);
复制代码
原理:当点击网页元素时,浏览器会进行从上到下捕获 → 命中目标 → 从下到上冒泡,此代码作用与捕获阶段,处于最上层。

代码解析:
论坛有jQuery,直接使用。   

//距离页面底部多少像素时,触发加载下一页
const loadThreshold = 1500;

//论坛几乎所有页面,添加inajax=1参数,就能获得xhtml,比直接访问得到的信息更少,适合动态加载时用作请求url
const requestUrl = buildJumpUrl(nextPage) + "&inajax=1";

//具体如何实现下一页,可去抓首页的包(滑动底部时自动加载下一页)

然后进行一些简单的分析,发现comiis_list_page_1函数用来加载下一页,将其代码copy,发送给ai,让ai理解,并将其余页面的结构也发给ai,最后一阵洽谈,就写出来了。

//判断当前正在浏览第n页,通过判断“第n页/共x页”标签是否显示在可视页面中
  1.     // 创建观察者实例
  2.     const observer = new IntersectionObserver((entries) => {
  3.         entries.forEach(entry => {
  4.             const { target, isIntersecting } = entry;
  5.             const markerText = target.textContent?.trim();
  6.             const pageMatch = markerText.match(/第(\d+)页/);
  7.             if (!pageMatch || !isIntersecting) return;

  8.             //已阅读完上一页
  9.             const pageNum = parseInt(pageMatch[1]) - 1;

  10.             const newUrl = buildJumpUrl(pageNum);
  11.             if (window.location.href !== newUrl) {
  12.                 console.log('已阅读' + pageNum)
  13.                 window.history.replaceState({}, document.title, newUrl);
  14.             }
  15.             // 持续监听,当用户返回上一页时,可以更新为上一页,故始终监听
  16.             // observer.unobserve(target);
  17.         });
  18.     }, {
  19.         threshold: 0.8 // 显示80%触发,兼顾体验与准确性
  20.     });
复制代码
//如果你的屏幕特别特别大,导致可以显示多个“第n页/共x页”,可能会出现未知错误,此时建议你修改“第n页/共x页”的添加逻辑,取余判断是否添加。

页码选择器:

当前页数通过已激活的class判断,总页数通过下拉列表项总数得出。PS:脚本执行时,会隐藏它,如果想切换页码,请点击“第n页”。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
已有2人评分好评 金币 理由
挽梦遗酒 + 1 太长了就不看了
喵喵猫 + 1 + 1 优秀

查看全部评分 总评分:好评 +1  金币 +2 

回复

使用道具 举报

54

主题

3588

回帖

1万

积分

博士生

Rank: 7Rank: 7Rank: 7

金币
789
好评
190
信誉
180

MT论坛新人MT论坛最佳新人MT论坛帅哥考神MT论坛活跃会员挂机大佬

发表于 2025-11-16 12:43:00 来自手机  | 显示全部楼层  来自 陕西
本帖最后由 青春向上 于 2025-11-21 22:42 编辑

主要功能:自动加载下一页、手动加载上一页、电梯(跳楼层)、自动记录已阅读页码、新标签打开帖子,修复帖子评论、点赞关注、好友分组,适配:导读、社区、个人帖子/回复、积分详情、帖子评论。

距发帖已持续更新1周,现已修复大部分bug,保准安了不吃亏。

多说无益,用了才知道。比其他大佬适配页面多,并多一些辅助功能。
回复

使用道具 举报

9

主题

5487

回帖

1万

积分

博士生

Rank: 7Rank: 7Rank: 7

金币
694
好评
0
信誉
116

MT论坛新人考神MT论坛帅哥

发表于 2025-11-16 12:43:10 来自手机  | 显示全部楼层  来自 安徽
看看隐藏
回复

使用道具 举报

87

主题

2597

回帖

8603

积分

硕士生

逆向小白

Rank: 6Rank: 6

金币
2680
好评
55
信誉
168

考神MT论坛新人MT论坛帅哥MT论坛最佳新人MT论坛活跃会员

发表于 2025-11-16 12:43:17 来自手机  | 显示全部楼层  来自 江西
看看隐藏
回复

使用道具 举报

124

主题

2509

回帖

9026

积分

硕士生

秋枫Mod

Rank: 6Rank: 6

金币
2900
好评
63
信誉
98

MT论坛最佳新人MT论坛帅哥MT论坛新人考神MT论坛活跃会员MT论坛灌水老大

QQ
发表于 2025-11-16 12:45:43 来自手机  | 显示全部楼层  来自 河南
回复

使用道具 举报

123

主题

3512

回帖

1万

积分

博士生

●一只菜鸡●

Rank: 7Rank: 7Rank: 7

金币
3509
好评
85
信誉
122

考神MT论坛新人MT论坛最佳新人MT论坛帅哥MT论坛活跃会员

发表于 2025-11-16 12:47:30 来自手机  | 显示全部楼层  来自 辽宁
看看隐藏,论坛有你更精彩!
回复

使用道具 举报

8

主题

1万

回帖

2万

积分

博士后

Rank: 8Rank: 8

金币
5139
好评
1
信誉
100
发表于 2025-11-16 12:50:06 来自手机  | 显示全部楼层  来自 山东
看看隐藏
回复

使用道具 举报

3

主题

764

回帖

2293

积分

大学生

Rank: 5Rank: 5

金币
1863
好评
0
信誉
100

MT论坛帅哥考神MT论坛新人

发表于 2025-11-16 12:55:50 来自手机  | 显示全部楼层  来自 福建
支持大佬
回复

使用道具 举报

0

主题

233

回帖

1364

积分

高中生

Rank: 4

金币
684
好评
0
信誉
100
发表于 2025-11-16 13:02:53 来自手机  | 显示全部楼层  来自 江苏
看看
回复

使用道具 举报

1

主题

835

回帖

2642

积分

大学生

Rank: 5Rank: 5

金币
12
好评
0
信誉
74
发表于 2025-11-16 13:06:36 来自手机  | 显示全部楼层  来自 江苏
看看隐藏
回复

使用道具 举报

140

主题

1953

回帖

7484

积分

硕士生

Rank: 6Rank: 6

金币
3830
好评
25
信誉
120
发表于 2025-11-16 13:07:40 来自手机  | 显示全部楼层  来自 广东
希望能突破99页限制
回复

使用道具 举报

5

主题

963

回帖

2769

积分

大学生

Rank: 5Rank: 5

金币
1966
好评
0
信誉
101

MT论坛新人考神MT论坛帅哥

发表于 2025-11-16 13:08:19 来自手机  | 显示全部楼层  来自 甘肃
看看隐藏
回复

使用道具 举报

20

主题

2499

回帖

8219

积分

硕士生

Rank: 6Rank: 6

金币
1288
好评
2
信誉
100

MT论坛最佳新人MT论坛新人

发表于 2025-11-16 13:15:17 来自手机  | 显示全部楼层  来自 山东
感谢分享
回复

使用道具 举报

54

主题

3588

回帖

1万

积分

博士生

Rank: 7Rank: 7Rank: 7

金币
789
好评
190
信誉
180

MT论坛新人MT论坛最佳新人MT论坛帅哥考神MT论坛活跃会员挂机大佬

发表于 2025-11-16 13:23:02 来自手机  | 显示全部楼层  来自 陕西
tuandgame 发表于 2025-11-16 13:07
希望能突破99页限制

这个没办法,本质上只是将下一页内容拼接到这一页,获取第100页时,服务器返回第一页内容,是写死在服务器代码内,除非你能找到漏洞。

如果你想查看更以前的帖子,可以找论坛uid小的元老们,他们的帖子有2018年的。或者搜索引擎/github找链接。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

483

主题

2万

回帖

6万

积分

版主

喵喵,喵~

Rank: 7Rank: 7Rank: 7

金币
44789
好评
304
信誉
126

MT论坛灌水老大MT论坛最佳新人2019-5.1节快乐考神MT论坛侠客MT论坛活跃会员MT论坛新人挂机大佬

发表于 2025-11-16 13:31:26 来自手机  | 显示全部楼层  来自 山东
优秀
已有1人评分金币 理由
青春向上 + 1 现在筹备js,过几年就出app。[doge].

查看全部评分 总评分:金币 +1 

回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表