← 全部文章

教程

自动展开「显示更多」、剧透和评论

评论区被缩到只剩三条。长帖子被「阅读全文」截断。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 —— 这样启动时还不存在的按钮也会被展开。

另见

安装 JustZix —— 别再不停地点「显示更多」。

为这篇文章评分

暂无评分 — 成为第一个。

自己动手试试

安装 JustZix,粘贴本文中的任意代码片段。两分钟,从零到一条在你所有设备上生效的规则。

获取 JustZix

功能 · 工作原理 · 示例 · 应用场景