周三下午,我盯着版本记录轻轻按下回车,Reading Ruler v1.2就这样悄无声息地推了上去。这个原本只用来划参考线的浏览器扩展,现在突然学会了朗读——不是那种调用浏览器语音API的简单包装,而是实打实地让内容脚本去接管了选中文字和输入框里的每一个词。
这件事的起点其实挺朴素。我一直觉得一个帮人聚焦阅读的工具,不该只停留在视觉层面。如果你正在吃力地啃一篇长文,或者某个输入框里的提示需要反复确认,为什么不能直接读给你听?于是就有了这次的文本转语音系统,我把它整个塞进了扩展配置里,和原本的标尺功能平起平坐。
真正让TTS落地的,是五个新增的配置项:ttsEnabled、autoSpeakSelection、ttsRate、ttsPitch、ttsVolume。它们跟着内容脚本在页面一侧随时待命,选中文字就能读,选择变化时自动读,随时也能打断。更细节的是,连文本框和里的内容都没放过——你在输入框里选一段文字,按Ctrl+Shift+S,它照样能清晰地念出来。所有设定都会同步进浏览器存储,翻个页也不会丢。
让这个能力变得顺手,其实花了不少心思。我为它配了一个专用的快捷键Ctrl+Shift+S,还动了三个关键文件:popup.ts、content.ts,外加manifest.json里补上tabs权限。说到底,这是为了让朗读这件事真正长在浏览体验里,而不是一个需要额外操作的外部功能。
UI不配齐的话,再好的功能也像半成品。原来的弹出窗口只是一堆控件从上到下落着,这次干脆整个推倒重来。新界面一打开,顶部是醒目的Hero标题区,往下分成两张独立卡片:一张仍是标尺设置,另一张就是全新的TTS控制端。最底部是快捷键提示,清晰的主要操作和次要操作被颜色和间距分得明明白白。
TTS卡片里塞进了一整套控制手柄:启用开关、自动朗读切换、语速滑块、音高滑块、音量滑块、一个醒目的“Speak Selection”按钮,还有一个立刻停读的停止键。每次操作完,底下都会弹出一条实时状态消息,成功、错误、信息提示——三色切换,一眼就知道刚才发生了什么。为了这套交互,弹出窗口被整体放大了一圈,颜色体系重新定义,渐变、玻璃面板、自定义开关、指标芯片、快捷键药丸,全用上了,还特意给Safari做了-webkit-backdrop-filter兼容,不然那块玻璃面板在苹果浏览器上可就碎一地了。
工程层面也没马虎。所有编译后的JS和sourcemap重新生成,popup的CSS错误修了个干净,TypeScript构建全程零警告。真正的后台工作全是那些不好显摆的东西:内容脚本怎么精准拦截选区变化、怎么区分普通选择和输入框文字、怎么处理好几个状态在popup和页面之间的同步。这些看不见的轴承,才是这次更新真正转得顺的底气。
回头看,这次交出的完整清单其实很单纯:全文本转语音支持、自动朗读行为、输入框朗读、一个新快捷键、重新设计的弹出窗口UI、全新的控件与状态消息、整套视觉风格翻新、manifest权限补全,外加干净构建和CSS修复。如果之前你用Reading Ruler只当个辅助标尺,那现在它已经变成了一个可以直接对话的专注工具。
最后说句私心话。这个扩展到现在一共就13个人下载,真不算多。但每次看到那个数字慢慢磨上去,都觉得挺酷的。就像如今它突然开始朗读了——声音很小,总归是发出了自己的动静。
热门跟贴