【问题标题】:Contenteditable reset text color after foreColor has been used without resetting other stylescontenteditable 在使用前颜色后重置文本颜色而不重置其他样式
【发布时间】:2010-10-01 20:48:07
【问题描述】:

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

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

这可能吗?

【问题讨论】:

    标签: javascript contenteditable


    【解决方案1】:

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

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

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

    【讨论】:

    • 哇,我不知道。它适用于哪些浏览器?
    • 我已经让它在 Internet Explorer 7-9、Chrome 和 Firefox 上按预期工作。遗憾的是,我的机器最近遇到了 Safari 和 Opera 的问题,所以我无法在这些平台上验证它。
    • 如果你把它扔进 jsfiddle,我很乐意在 Opera 和 Safari 上测试它。
    • 不幸的是它对我不起作用(Chrome 30) - 它会删除所有格式。但是,有一个有趣的缺点:默认情况下,使用black 作为参数调用命令foreColor 会删除所有font 标签。也许是因为默认的 CSS 规则?不知道。但它有效。
    • 不幸的是,在 Chrome 中仍然无法使用(改为删除所有格式)
    【解决方案2】:

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

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

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

    在 Firefox 中,你可以使用这个:

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

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

    【讨论】:

      猜你喜欢
      • 2019-04-10
      • 1970-01-01
      • 2011-11-23
      • 1970-01-01
      • 2023-03-16
      • 2012-11-05
      • 2016-02-12
      • 2015-05-11
      • 1970-01-01
      相关资源
      最近更新 更多