无法再捕获ForeColor命令了,请注意4.1.4

时间:2014-12-18 06:12:35

标签: javascript wordpress tinymce tinymce-4

Tinymce用于触发文本颜色更改的事件,如果你运行:

tinymce.activeEditor.on('execCommand', function() {console.log(arguments);} )

你会看到execCommand ForeColor,只要文本颜色发生变化就会运行。如果您查看TinyMCE-Textcolor插件,它似乎没有任何execCommands或任何方法来检测文本颜色何时更改。

1 个答案:

答案 0 :(得分:6)

TextColor插件不再触发execCommand事件,因为since this commit它直接使用Formatter infrastructure。所以你不能得到你的旧事件。

但是,您可以使用格式化程序上的formatChanged来提供回调:

tinymce.activeEditor.formatter.formatChanged('forecolor', function (isNew, args) {
    if (isNew)
    console.log("new color", args.node.style.color);
}, true)

演示JSFiddle

但即使您只选择一些已经着色的文字,这也会触发......所以很遗憾,这不是最佳选择。

当然可以对formatter.apply进行猴子修补以触发旧的ExecCommand事件:

var oldApply = tinymce.activeEditor.formatter.apply;

tinymce.activeEditor.formatter.apply = function apply(name, vars, node) {
    oldApply(name, vars, node);
    tinymce.activeEditor.fire('ExecCommand', {name: name, vars: vars});
}

演示JSFiddle

但是这不可能在全局范围内完成,并且必须为每个tinymce编辑器实例重复,因此它再次不是最佳解决方案......