使用foreColor后无需重置其他样式即可获得重置文本颜色

时间:2010-10-01 20:48:08

标签: javascript contenteditable

更改contenteditable div中文本的文字颜色很简单 - 只需简单地调用document.execCommand("foreColor",false,"#FFF")即可将文字颜色更改为白色。

但是,我找不到将此颜色重置为其默认值(或父元素的值)的方法。 document.execCommand("removeFormat",false,null)完美无缺,除了它还会删除任何粗体或斜体样式,这不是我想要的。简单地将颜色设置为黑色就可以了,除非您在选择中有一个链接(应该保持相同的颜色)。

这可能吗?

2 个答案:

答案 0 :(得分:14)

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

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

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

答案 1 :(得分:6)

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

在IE9中,您可以使用以下内容:

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

在Firefox中,您可以使用:

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

但是在Chrome中,传递null / empty字符串什么都不做,而传递'inherit'会导致文本颜色设置为“rgba(0,0,0,0)” - 透明黑色。显然这是一个错误。我希望看到一种更可靠的跨浏览器方式来实现这一目标。