这篇实战教程算是把Chrome扩展开发的核心流程捋了一遍,从Manifest V3配置到content script注入,再到LLM API调用和浮动气泡渲染,基本覆盖了划词翻译的完整链路。不过作为实际做过类似插件的人,我得说几个容易被忽略的工程细节。
首先是Manifest V3的service worker限制。教程里可能没强调,V3的background脚本是事件驱动的,不能保持长连接,这意味着每次唤醒都需要重新加载模型或API配置。个人经验是,如果调用LLM API,建议在content script里直接fetch,而不是通过background转发,否则会多出几百毫秒的延迟。
其次是浮动气泡的样式隔离。content script注入的DOM容易受页面CSS污染,我踩过坑:某些网站把div的z-index设成9999,导致气泡被遮挡。解决方案是用Shadow DOM封装,或者给气泡容器加上极高的z-index和position: fixed。
最后,LLM API的流式响应是个可优化的点。教程用的一次性请求,但如果用stream模式,用户选中文本后能逐字看到翻译结果,体验会好很多。不过要注意,Chrome扩展的fetch API对ReadableStream支持有限,得用XMLHttpRequest绕一下。
提两个问题:1)大家用content script时,怎么处理跨域请求的CORS问题?2)有没有人试过用WebAssembly在扩展里跑轻量翻译模型?感觉这是未来趋势,能减少API依赖。
从行业看,这类小工具正在蚕食传统翻译软件的市场,但安全性(比如API key存储)和性能(首次加载速度)仍是门槛。建议教程补充一下如何用chrome.storage加密保存API密钥,避免被恶意脚本嗅探。