自动展开「显示更多」、剧透和评论
评论区被缩到只剩三条。长帖子被「阅读全文」截断。FAQ 藏在折叠面板里。内容就在页面上 —— 只是被收在一个按钮后面。这条规则替你点击所有那些按钮。
模式
展开按钮有两种线索之一:像「显示更多」/「阅读全文」这样的文本,或者一个 aria-expanded="false" 属性。规则两个都捕获并点击。
规则
规则的 JavaScript:
const RE = /显示更多|阅读全文|显示全部|展开|show more|read more|see more|expand|view all/i;
function expandAll() {
document.querySelectorAll('button, a, [role="button"]').forEach(el => {
if (el.dataset.jzExpanded) return;
const hit = RE.test(el.textContent || '')
|| el.getAttribute('aria-expanded') === 'false';
if (hit) {
el.dataset.jzExpanded = '1';
el.click();
}
});
}
expandAll();
new MutationObserver(expandAll)
.observe(document.body, { childList: true, subtree: true });
它如何工作
一个文本正则加 aria-expanded
一个正则表达式,几种措辞变体,i 标志忽略大小写。我们独立地检查 aria-expanded="false" —— 折叠面板的标准属性,即便没有匹配文本也有效。
jzExpanded 标记
点击一个元素之后我们给它设上 data-jz-expanded。下一次函数会跳过它。没有那个标记我们会陷入循环:一次点击展开区块,区块改变 DOM,MutationObserver 触发函数,它又点击同一个按钮。
MutationObserver
评论和列表常常在页面启动之后才加载。MutationObserver 观察整个 <body>,每次有东西加进 DOM 就调用 expandAll —— 这样启动时还不存在的按钮也会被展开。
坑
- 误判。一个无限加载商店的「显示更多商品」也会被点击。如果它碍事,把正则或选择器收窄到一个特定容器。
- 变更风暴。在非常动态的页面上
expandAll经常触发。它能工作,是因为jzExpanded标记让每次后续遍历都很便宜 —— 跳过已经点过的。 - 带警告的剧透。展开剧透或敏感内容是你的决定 —— 规则不区分「显示更多」和「显示成人内容」。
另见
- 示例 —— 更多开箱即用的 JS 规则
- 自动翻页 —— 一个相近的导航自动化模式
- Output Console —— 观察规则点击了什么
安装 JustZix —— 别再不停地点「显示更多」。
为这篇文章评分
暂无评分 — 成为第一个。