textarea里spellcheck="false"仍标红的根本原因是被ios的autocorrect="off"缺失或系统级拼写检查设置覆盖;input[type="text"]上该属性基本无效,仅textarea和contenteditable元素可靠支持。

textarea 里 spellcheck="false" 还标红,不是代码写错了
根本原因不是 spellcheck 属性没生效,而是它被更高优先级的机制覆盖了:iOS Safari 的 autocorrect="off" 会直接压制拼写检查逻辑,macOS 系统级设置(如「键盘 → 文本输入 → 在网页文本框中检查拼写」开着)也会让所有 spellcheck 失效。验证是否真禁用成功,不能只看 HTML 源码,得在浏览器里输一个明显错词(比如 recieve),观察:有没有红色波浪线、右键点一下有没有“更正为…”菜单——两者皆无才算到位。
input[type="text"] 上设 spellcheck="false" 基本无效
spellcheck 属性对 input[type="text"] 的控制能力极弱,Chrome/Firefox/Safari 都不保证响应。你看到的红线,大概率是系统自动更正(autocorrect)或输入法行为触发的,和 spellcheck 无关。真正可靠的支持场景只有:textarea 和 contenteditable="true" 元素。别给 input[type="email"]、input[type="url"]、input[type="password"] 加这个属性——浏览器解析时就静默丢弃了。
禁用拼写检查必须四件套齐上
单写 spellcheck="false" 在移动端尤其 iOS 上等于没写。要彻底关掉标红+弹建议,必须同时设置:
-
spellcheck="false":提示浏览器别启动拼写检查逻辑 -
autocorrect="off":iOS 必需项,否则照样标红+弹菜单 -
autocapitalize="none":防止const foo =被自动变成Const foo = -
inputmode="verbatim":明确告诉键盘别猜词、别联想、别弹拼写建议栏
正确写法示例:<textarea spellcheck="false" autocorrect="off" autocapitalize="none" inputmode="verbatim"></textarea>。Google 翻译页的输入框就是这么干的,兼容性经过大规模验证。
Monaco/CodeMirror 编辑器里 spellcheck="false" 不起作用?找错节点了
这类编辑器视觉上是 div 渲染,但真实输入层通常是隐藏的 textarea(Monaco 里常在 class="monaco-editor-background" 下,CodeMirror 6 中是 role="textbox" 的 textarea)。你给外层容器加 spellcheck="false" 完全没用,因为浏览器只检查“可编辑且聚焦”的元素。解决路径很明确:找到那个实际承载输入事件的隐藏 textarea,然后对其设置四件套。Electron 应用还要额外注意主进程的 webPreferences.spellcheck: false,它会全局禁用,和 HTML 属性无关。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











