Javascript Can';tinymce 4.1.4,我再也听不到前景色命令了
Tinymce用于触发文本颜色更改事件,如果您运行:Javascript Can';tinymce 4.1.4,我再也听不到前景色命令了,javascript,wordpress,tinymce,tinymce-4,Javascript,Wordpress,Tinymce,Tinymce 4,Tinymce用于触发文本颜色更改事件,如果您运行: tinymce.activeEditor.on('execCommand', function() {console.log(arguments);} ) 您将看到execCommand ForeColor,在文本颜色更改时运行。如果查看TinyMCE Textcolor插件,它似乎没有任何execCommands或任何检测文本颜色变化的方法。Textcolor插件不再触发execCommand事件,因为它直接使用。因此,您无法获取旧事件
tinymce.activeEditor.on('execCommand', function() {console.log(arguments);} )
您将看到execCommand ForeColor,在文本颜色更改时运行。如果查看TinyMCE Textcolor插件,它似乎没有任何execCommands或任何检测文本颜色变化的方法。Textcolor插件不再触发
execCommand
事件,因为它直接使用。因此,您无法获取旧事件
但是,您可以使用格式化程序上的formatChanged
来提供回调:
tinymce.activeEditor.formatter.formatChanged('forecolor', function (isNew, args) {
if (isNew)
console.log("new color", args.node.style.color);
}, true)
演示
但即使你只选择一些已经上色的文本,这也会触发。。。不幸的是,这不是最好的选择
当然,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});
}
演示
但这不能全局执行,必须对每个tinymce编辑器实例重复执行,因此它也不是最佳解决方案…TextColor插件不再触发execCommand事件,因为它直接使用。因此,您无法获取旧事件,但可以使用格式化程序上的
formatChanged
来提供回调:。然而,即使你只是选择一些已经上色的文本,这也会触发。。。可悲的是,这不是最好的alternative@nemesv既然你可以使用'monkey patch'editor.formatter.apply,你的评论基本上就是这个问题的答案-为什么不把你的评论作为答案呢?我将formatter.apply monkey patch添加到tinymce.init的init_实例_回调中。这让我可以在创建每个实例时将其应用于该实例,而不是依赖于tinymce.activeEditor。