Javascript Contenteditable在使用前景色后重置文本颜色,而不重置其他样式

Javascript Contenteditable在使用前景色后重置文本颜色,而不重置其他样式,javascript,contenteditable,Javascript,Contenteditable,更改contenteditable div中文本的文本颜色很容易-只需调用document.execCommand(“foreColor”,false,#FFF”)即可将文本颜色更改为白色 但是,我无法找到将此颜色重置回其默认值(或父元素的值)的方法document.execCommand(“removeFormat”,false,null)工作得很好,只是它也会删除任何粗体或斜体样式,这不是我想要的。只需将颜色设置为黑色即可,除了选择中有链接(该链接应保持相同的颜色)之外 这可能吗?这里有一个

更改contenteditable div中文本的文本颜色很容易-只需调用
document.execCommand(“foreColor”,false,#FFF”)
即可将文本颜色更改为白色

但是,我无法找到将此颜色重置回其默认值(或父元素的值)的方法
document.execCommand(“removeFormat”,false,null)
工作得很好,只是它也会删除任何粗体或斜体样式,这不是我想要的。只需将颜色设置为黑色即可,除了选择中有链接(该链接应保持相同的颜色)之外


这可能吗?

这里有一个部分答案,但我仍在寻找Chrome的解决方案:

在IE9中,您可以使用以下各项:

document.execCommand("foreColor",false,"")
document.execCommand("removeFormat", false, "foreColor");
在Firefox中,您可以使用:

document.execCommand("foreColor",false,"inherit")

但在Chrome中,传递null/空字符串没有任何作用,而传递“inherit”则会将文本颜色设置为“rgba(0,0,0,0)”——透明黑色。显然这是一个错误。我希望看到一种更可靠的跨浏览器方式来实现这一点。

我在以下方面取得了成功:

document.execCommand("foreColor",false,"")
document.execCommand("removeFormat", false, "foreColor");

似乎(到目前为止)
removeFormat
可以理解为只删除由特定命令创建的格式。

Wow,我不知道这一点。它在哪些浏览器中工作?我已经让它在InternetExplorer7-9、Chrome和Firefox上按预期工作。不幸的是,我的机器最近在Safari和Opera上出现了问题,所以我无法在这些平台上验证它。如果你把它放到JSFIDLE中,我很乐意在Opera和Safari上测试它。不幸的是,它对我不起作用(Chrome 30)-它删除了所有格式。但是,有一个有趣的缺点:默认情况下,使用
black
作为参数调用命令
foreColor
,会删除所有
font
标记。也许是因为默认的CSS规则?不知道。不幸的是,它仍然不能在Chrome中工作(而是删除所有格式)