← 全部文章

指南

给任何页面添加阅读时间和字数徽章

在你投入一篇文章之前,知道这份投入的规模会有帮助。这是三分钟的速览还是二十分钟的深度阅读?许多网站不说。用一小段 JustZix JavaScript 规则,你可以自己给每个页面添加一个阅读时间和字数徽章。

阅读时间是如何估算的

标准方法很简单:数一数文章里的字数,然后除以平均阅读速度。大多数估算对在线散文的成年读者使用每分钟 200 到 250 个词。我们将使用 220 作为合理的中间值。它永远不会精确,但能给出有用的规模感。

计数脚本

这段代码找到主文章、数它的字数并计算分钟数。把它粘贴进 JustZix 规则的 JS 面板:

function countArticle() {
  var el = document.querySelector('article, main, .post-content');
  if (!el) return null;
  var text = el.innerText || '';
  var words = text.trim().split(/\s+/).filter(Boolean).length;
  var minutes = Math.max(1, Math.round(words / 220));
  return { words: words, minutes: minutes };
}

正则表达式 /\s+/ 在任何一连串空白处分割,而 filter(Boolean) 丢弃空条目,这样计数才干净。

绘制徽章

现在构建一个小的浮动元素并把它放在视口的一角:

function showBadge(stats) {
  if (!stats) return;
  var b = document.createElement('div');
  b.id = 'jz-read-badge';
  b.textContent = stats.minutes + ' min read · '
    + stats.words.toLocaleString() + ' words';
  b.style.cssText = [
    'position:fixed', 'bottom:16px', 'right:16px',
    'z-index:99999', 'padding:8px 14px',
    'background:#2b2620', 'color:#f4ecd8',
    'font:13px/1 system-ui, sans-serif',
    'border-radius:20px', 'box-shadow:0 2px 8px rgba(0,0,0,.3)'
  ].join(';');
  document.body.appendChild(b);
}

var stats = countArticle();
showBadge(stats);

徽章固定在右下角,所以它在你滚动时保持可见,又不遮挡文本。

随滚动更新进度

你可以通过显示还剩多少,让徽章变成实时的。添加一个根据位置重新计算的滚动监听器:

window.addEventListener('scroll', function () {
  var badge = document.getElementById('jz-read-badge');
  if (!badge || !stats) return;
  var max = document.body.scrollHeight - window.innerHeight;
  var ratio = max > 0 ? window.scrollY / max : 1;
  var left = Math.max(0, Math.round(stats.minutes * (1 - ratio)));
  badge.textContent = left + ' min left · '
    + Math.round(ratio * 100) + '%';
}, { passive: true });

{ passive: true } 选项告诉浏览器该监听器不会阻塞滚动,让页面保持顺滑。

处理延迟加载的页面

有些网站在初次加载之后才渲染文章。如果徽章显示零字数,就把计数稍微延迟:

setTimeout(function () {
  if (!document.getElementById('jz-read-badge')) {
    showBadge(countArticle());
  }
}, 1200);

把它做成一条规则

新建一条 JustZix 规则,把 URL 模式设为你想要徽章的网站,并把计数、徽章和滚动块粘贴进 JS 面板。保存并重新加载——角落里一个整洁的药丸标签现在告诉你将面对什么,以及你已经走了多远。

阅读徽章与平静的布局自然搭配。把它与隐藏的侧边栏和温暖的背景组合,形成一套专注的阅读设置。浏览我们的现成示例获取更多 JS 配方,并下载 JustZix,今天就添加这个徽章。

为这篇文章评分

暂无评分 — 成为第一个。

自己动手试试

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

获取 JustZix

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