摘要
我们使用 tinymce 时常会用到一个功能,就是为文字设置颜色,但是当我们第二次为文字设置同样的颜色时,会有失效/取消/复原/重置的效果,将原本设置的文字颜色给撤销掉,我们当然是不希望如此,本篇内容将提供两个解决思路和一个万能解决方案。
情景复现
举个栗子,给文本设置颜色可以使用 tinymce.activeEditor.execCommand('forecolor', false, 颜色值)
,但如果第二次设置时颜色值还是一样的话,会取消第一次设置的效果,效果如下:
解决方案一
设置颜色逻辑中添加获取所选文本颜色值的逻辑,判断获取的颜色值与要设置的颜色值是否相等,如果相等则不再执行设置颜色逻辑,否则执行。
缺点:如果文本是这样的:这是一段文本内容。你选了“一段文本内”,期望将颜色设置成红色,一般获取所选文本颜色值逻辑获取的是最后一个文字的颜色值,此时获取的颜色值是红色,等于要设置的颜色值红色,则无法通过逻辑判断。
万能解决方案
执行两次设置颜色的逻辑,第一次设置成随机颜色值,这样是为了确保既与原来的颜色值不同,也与第二次要设置的颜色值不同,第二次才是设置成需要的颜色值。永远让第二次设置是第一次设置,这样就不会出现取消了上一次设置效果的现象。
代码示例:code.juejin.cn/pen/7130865…
参考
你还可以在以下地址找到本文: