html中不存在writingsuggestions属性,它被所有浏览器忽略;真正控制输入联想的是autocomplete(管填表历史)和autocorrect/spellcheck(管拼写纠正),其中spellcheck="false"仅对textarea和contenteditable="true"元素生效。

HTML 中根本没有 writingsuggestions 属性
这是个常见误解——writingsuggestions 并非 HTML 规范中的合法属性,所有浏览器都会忽略它。你在元素上写 writingsuggestions="false" 或类似值,完全不起作用,也不会报错,只是白写。
真正能关掉输入联想的,是 autocomplete 和 autocorrect
浏览器的“智能联想”实际分两类:一类是填表历史(账号、地址等),由 autocomplete 控制;另一类是拼写纠正与建议(如 iOS 键盘弹出的候选词),靠 autocorrect 和 spellcheck 协同生效。
-
autocomplete="off"对所有<input>有效,包括type="text"、type="search",能阻止浏览器从历史记录中自动填充 -
autocorrect="off"主要在 iOS Safari 上起效,必须配合contenteditable="true"或<textarea></textarea>使用,单行<input>上常被忽略 -
spellcheck="false"只对可编辑元素生效:仅<textarea></textarea>和设置了contenteditable="true"的容器(如<div id="editor">)才认这个属性 <h3>为什么给 <code><pre class="brush:php;toolbar:false;"></pre>或<code>加spellcheck="false"没用因为它们默认不可编辑,
spellcheck属性在只读元素上无意义。你看到的“代码编辑器”界面,往往由多个非编辑元素(如<span></span>、<canvas></canvas>)渲染而成,真正的输入层其实是隐藏的<textarea></textarea>或带contenteditable="true"的<div>。 <ul> <li>Monaco 编辑器里,找 class 含 <code>monaco-editor-background的<textarea></textarea>,对其加spellcheck="false" - CodeMirror 6 中,目标是
role="textbox"的<textarea></textarea>,需在view.dom插入后动态设置 - 别在
<pre class="brush:php;toolbar:false;"></pre>、<code>或预览区上浪费力气——它们不处理输入,也不触发拼写检查
Safari 的“下划线闪现”不是 bug,但得额外处理
即使正确设置了 spellcheck="false" 和 autocorrect="off",macOS/iOS Safari 在焦点刚获得时仍可能短暂显示红色波浪线(约 200ms)。这不是属性失效,而是其异步词典检查机制导致。
- 必须同时加
autocomplete="off",否则系统级自动补全会干扰 - 避免使用
inputmode="text"—— 它会强制唤起带拼写建议的软键盘,和spellcheck="false"直接冲突 - Electron 应用还需在主进程 WebPreferences 中设
spellcheck: false,HTML 层的设置无法覆盖这一级











