Больше не могу поймать команду ForeColor, tinymce 4.1.4


Tinymce используется для запуска события для изменения цвета текста, если вы запустили:

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

Вы увидите execCommand ForeColor, запускаемый при изменении цвета текста. Если вы посмотрите в плагине TinyMCE-Textcolor, он, кажется, не имеет никаких execCommands или любого способа обнаружить, когда изменяется цвет текста.

1 2

1 ответ:

На свойства textColor плагин больше не стреляет execCommand событие, потому что поскольку этот коммит он непосредственно использует форматирования инфраструктуры. Поэтому вы не можете получить свое старое событие.

Однако вы можете использовать formatChanged на форматере для обеспечения обратного вызова:

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

Demo 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});
}

Demo JSFiddle.

Но это не может быть сделано глобально и должно повторяться для каждого экземпляра редактора tinymce, поэтому это снова не лучшее решение...