如何用JavaScript检测浏览器是否启用Enhanced Spell Check?
能否通过JavaScript检测Chrome/Edge的拼写检查等级?
Chrome和Edge浏览器的表单拼写检查分为三个等级:off(关闭)、on(本地开启)、enhanced(增强)。当开启enhanced等级时,表单内容会被发送至谷歌(Chrome)或微软(Edge)服务器进行拼写和语法检查,这会引发spell-jacking风险——如果表单涉及隐私或敏感信息,这类数据传输可能带来安全隐患。
我们已知可以通过spellcheck="false"属性直接关闭拼写检查,但本地拼写检查是允许且必需的功能。现在的需求是:当用户启用Enhanced Spell Check时,向其发出警告,甚至限制表单编辑。
核心问题
是否可以通过JavaScript检测浏览器当前的拼写检查等级,以便向终端用户预警风险?
答案
目前没有公开的、标准的JavaScript API可以直接检测浏览器拼写检查的具体等级(off/on/enhanced)。浏览器并未将这个用户设置暴露给前端脚本,主要是出于用户隐私和设置权限的考量。
不过有一些间接的近似判断方法,但可靠性不高:
- Chrome私有扩展API:Chrome有一个非标准的
chrome.settingsPrivateAPI可以读取拼写检查设置,但它仅对Chrome扩展程序开放,普通网页无法访问,而且属于私有接口,随时可能被修改或移除。 - 行为特征推测:可以尝试输入包含特定错误的文本,观察拼写检查的行为差异——比如本地检查只会标记常见错误,增强版可能提供更详细的语法建议或罕见词纠错。但这种方法很难精准区分,不同语言、浏览器版本的表现差异大,误判率很高。
替代解决方案
既然无法直接检测,建议通过以下方式规避风险:
- 明确告知用户:在敏感表单(如隐私信息、密码输入框)旁添加醒目的提示,提醒用户关闭Enhanced Spell Check功能,并给出操作步骤(比如Chrome:设置→语言和输入设置→拼写检查→关闭「增强拼写检查」)。
- 强制禁用敏感字段拼写检查:对于绝对不能外传的敏感内容(如密码、银行卡号),直接设置
spellcheck="false",优先保障数据安全。 - 自定义本地拼写检查:集成开源的本地拼写检查库(如前端版
hunspell),完全替代浏览器自带的拼写检查,确保数据不会被发送到第三方服务器。
内容的提问来源于stack exchange,提问作者Curious User
相关产品推荐
相关产品推荐

