内容可编辑元素上的拼写检查=false

30

对于普通的输入元素,您可以通过使用HTML属性来关闭拼写检查(至少在FF下)。但是同样的spellcheck="false"在contentEditable元素上似乎不起作用。那么,对于contentEditable元素,是否有其他解决方案?


正如Adam Pascoe的回答中所提到的,禁用整个文档的拼写检查似乎是可行的(2022+),尽管有点过于激进。<body spellcheck="false"> - oelna
4个回答

32

我不确定这是否是你所说的问题,但我曾经遇到一个类似的问题,即从contentEditable元素中删除拼写检查下划线。问题在于,当你将 spellcheck 属性设置为 false 时,任何因拼写错误而被下划线标记的单词会一直保留这种下划线,直到你聚焦于contentEditable元素。

以下hack应该能解决问题:

element.spellcheck = false;
element.focus();
element.blur();

希望能有所帮助!


17

根据Neil所说,我想到了这个人:

$('body').attr("spellcheck",false)
它默认所有可编辑的div不使用拼写检查。我计划使用.blur和.focus根据需要启用单个div的拼写检查。

它将所有我的可编辑div的拼写检查设置为默认关闭。 我打算使用.blur和.focus根据需要为每个div启用拼写检查。


22
这么简单的事情不需要使用jQuery:document.body.setAttribute('spellcheck', false); - Stephen Jenkins
实际上,并不是每个项目都需要使用jQuery。 - RixTheTyrunt

17
在Gecko中,所有可编辑的元素都会基于元素上的spellcheck属性/属性来检查拼写。

在我干净的(只有Firebug)安装的FF4中似乎不起作用。至少当我通过Firebug设置它时。 - medihack
"data:text/html,<div contenteditable>Fe Fi Fo Fum" 显示为拼写错误。而 "data:text/html,<body spellcheck=false><div contenteditable>Fe Fi Fo Fum" 则不会。 - Neil

0

即使忽略浏览器的错误,您也无法关闭拼写检查,您只能建议用户代理不对其进行拼写检查。如果您查看规范部分,其中描述了确定可拼写检查内容的算法,以下是前两个步骤:

  1. 如果用户已禁用此文本的检查,则检查将被禁用。
  2. 否则,如果用户强制始终启用此文本的检查,则检查将被启用。

用户首选项始终覆盖属性。


这很不幸。 - Colin D

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接