打开网易新闻 查看精彩图片

全球67%的人用Chrome上网,但没人能一键清净看文章。Safari有,Firefox有,连Edge都抄了——Chrome用户还在手动关广告、叉弹窗、躲推荐流。

一位前端工程师的周末项目,正在补上这个缺口。

「我只是想读文章,就这么难?」

「我只是想读文章,就这么难?」

打开一篇长文,正文被侧边栏广告、导航菜单、邮件订阅弹窗、「猜你喜欢」组件团团围住。这是Chrome用户的日常。

Safari内置阅读模式。Firefox用Mozilla自己的Readability.js,已稳定运行多年。Chrome呢?chrome://flags里埋了个实验性功能,不稳定、功能残缺、不敢日用。

开发者Dustin Goodman的解决方案叫ZenRead。一键去广告、去 clutter(杂乱元素),支持无障碍阅读、仿生速读、文本转语音,还能针对不同站点定制内容提取规则。

周末项目变成每日必用工具。

不造轮子,但得会拧螺丝

不造轮子,但得会拧螺丝

阅读模式的核心是内容提取:识别页面哪部分是正文,其余扔掉。Goodman直接用了@mozilla/readability,Firefox同款底层库。

代码看起来简洁,有两个坑踩过的人才知道。

必须克隆文档再处理。Readability解析时会修改DOM。传真实文档进去,页面直接崩掉。doc.cloneNode(true)造个安全副本,是保命操作。

输出必须消毒。提取的HTML来自不可信源。DOMPurify过滤掉