spellcheck=false on contentEditable elements

2019-02-11 21:33发布

For normal input elements you can turn off the spell checking by using a HTML attribute (at least under FF). The same spellcheck="false" does not seem to work on a contentEditable element. Is there another solution for contentEditable elements?

4条回答
家丑人穷心不美
2楼-- · 2019-02-11 22:04

In Gecko all contenteditable elements check spelling based on the spellcheck attribute/property on the <body> element.

查看更多
Juvenile、少年°
3楼-- · 2019-02-11 22:05

Even disregarding browser bugs you can't turn off the spell checking, all you can do is suggest to the user agent that it doesn't spell check stuff. If you look at the section of the spec where it describes the algorithm for determining what's spell checkable here's the first two steps:

  1. If the user has disabled the checking for this text, then the checking is disabled.
  2. Otherwise, if the user has forced the checking for this text to always be enabled, then the checking is enabled.

User preferences always override the attributes.

查看更多
甜甜的少女心
4楼-- · 2019-02-11 22:24

I'm not sure if this is what you're getting at, but I was having what sounds like a similar problem with removing the spellcheck underline from contentEditable elements. The problem is, when you set the spellcheck attribute to false, any words that were underlined for spelling mistakes will keep this underline until you focus on the contentEditable element.

The following hack should do the trick:

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

Hope that helps!

查看更多
我想做一个坏孩纸
5楼-- · 2019-02-11 22:26

Based on what Neil said, I came up with this guy:

$('body').attr("spellcheck",false)

It defaulted all of my contenteditable divs to not use spell check. I plan on using .blur and .focus to enable spell check for individual divs as necessary.

查看更多
登录 后发表回答