Tinymce用于触发文本颜色更改的事件,如果你运行:
tinymce.activeEditor.on('execCommand', function() {console.log(arguments);} )
你会看到execCommand ForeColor,只要文本颜色发生变化就会运行。如果您查看TinyMCE-Textcolor插件,它似乎没有任何execCommands或任何方法来检测文本颜色何时更改。
答案 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编辑器实例重复,因此它再次不是最佳解决方案......