spellcheck="true" 必须显式写,仅对textarea、text/search输入框稳定生效,email/url等类型无效,contenteditable需单独设置且不继承,系统拼写开关、输入法模式和触发时机共同影响红线显示。

spellcheck="true" 必须显式写,不能省略
浏览器不会因为元素是 <textarea></textarea> 或 <input type="text"> 就自动开启拼写检查。即使 Chrome 默认对 <textarea></textarea> 启用,Firefox 和 Safari 行为不一致,靠默认值会出问题。
-
spellcheck="true"是唯一可靠写法,等价于布尔简写spellcheck - 省略该属性时,
<input>在 Chrome 可能启用,Firefox 可能关闭;contenteditable元素多数情况下直接忽略 - 别写
spellcheck=""或spellcheck="on"——只有"true"和"false"是标准值
哪些元素真正响应 spellcheck?
只对可编辑且语义上属于“文本输入”的元素生效,不是所有带 contenteditable 的标签都行。
- ✅ 稳定支持:
<textarea spellcheck="true"></textarea>、<input type="text" spellcheck="true">、<input type="search" spellcheck="true"> - ⚠️ 基本无效:
<input type="email">、<input type="url">、<input type="tel">——浏览器优先走格式校验,跳过拼写检查 - ❌ 完全无视:
<input type="password">、<input type="number">、<input type="date">,DOM 解析阶段就被丢弃 - ?
contenteditable="true"元素必须同时写spellcheck="true",且不继承——子元素如<p></p>也要单独加
写了 spellcheck="true" 却没红线?先查这三处
代码没错,但环境没配齐,90% 的“失效”卡在这几步。
- 系统级开关没开:macOS 要进「系统设置 → 键盘 → 文本输入」勾选「在网页文本框中检查拼写」;Windows/Chrome 需访问
chrome://settings/languages开启拼写检查并安装英文词典 - 输入法干扰:用搜狗、微软拼音打英文时,拼写反馈常被拦截;切到纯英文直输模式(比如按
Shift)再试 - 触发时机不对:波浪线不是实时逐字标红,得等单词输完、按下空格 / 回车 / Tab 才渲染;输入
recieve后松开空格,才可能看到红线
spellcheck="false" 关不掉红线?iOS 和 Safari 是重灾区
在 iOS Safari 上,单写 spellcheck="false" 几乎无效——系统级 autocorrect 逻辑会覆盖它。
- 要彻底禁用,必须组合四件套:
spellcheck="false"+autocorrect="off"+autocapitalize="none"+inputmode="verbatim" - 对
<textarea></textarea>,spellcheck="false"本身有效;但若右键仍出现「更正为…」菜单,说明系统拼写开关没关 - CodeMirror 或 Monaco 编辑器里,真正起作用的是底层隐藏的
<textarea></textarea>,不是你看到的 div 层——得找到那个role="textbox"的 textarea 再设属性
definately 这类错词,看有没有波浪线、右键有没有更正菜单——别只盯着 HTML 源码。前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











