更新:这已被确认为Chrome中的错误。 (谢谢@ michael-robinson)
在Chrome中(至少是v22),我注意到即使在禁用了contentEditable之后,拼写检查“红色波浪形”下划线也可能保留。
我做了一个jsfiddle演示:jsfiddle demo。
即使我在禁用spellcheck="false"
之前设置了属性contentEditable
,它们也会保留。
任何人都知道如何解决或解决这个问题的好方法?理想情况下,当内容可编辑时,我会保留内置的拼写检查功能。
答案 0 :(得分:3)
您是否尝试过设置(不起作用,请参阅下面的其他解决方案)display: none
(使用CSS),然后将显示设置回原来的状态?可能会强制Chrome重绘元素...
或者,您可以创建元素的副本(但具有contenteditable disabled),将其放置在原始元素之后并删除原始元素。
更新1 :第一个解决方案不起作用,但第二个解决方案不起作用。更新了JSfiddle http://jsfiddle.net/RegVn/6/
UPDATE 2 :上面的解决方案使用innerHTML来删除销毁事件处理程序。它还会破坏选择/插入位置。
新方法使用jQuery的clone()
方法(在深度克隆模式下)创建对象的副本(通过事件处理程序复制),并具有自定义函数以保存对选择的引用,并将其还原然后。请注意,选择保存/恢复功能在ie6-8中不起作用,但我认为这是可以接受的,因为问题标记为Chrome。更新了JSfiddle:http://jsfiddle.net/RegVn/23/
答案 1 :(得分:1)
spellcheck属性指定元素是否要检查其拼写和语法:
答案 2 :(得分:1)
如果更新元素的innerHTML,则会重新评估拼写检查,因此如果spellcheck="false"
或元素不可编辑,它们将会消失。
例如:
myElement.innerHTML = myElement.innerHTML + " "; // add a space to force a change.
这有很大的缺点:
indeterminate
属性或任何其他自定义属性。现在可以,但我仍在寻找更好的答案。建议?
答案 3 :(得分:1)
将属性spellcheck="false"
添加到元素中对我有用。
答案 4 :(得分:0)
var content = $("#editor").html();
$("#editor").html("")
$("#editor").attr('spellcheck', 'false');
$("#editor").html(content);
尝试此代码,它应该工作。这是基于克隆内部HTML的相同的先前答案。
适用于FF和Chrome。