Ne peut plus attraper la commande ForeColor, tinymce 4.1.4

Tinymce a utilisé pour déclencher un événement pour le changement de couleur de texte, si vous avez couru:

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

Vous verriez execCommand ForeColor, exécuté chaque fois que la couleur du texte est modifiée. Si vous regardez dans le plugin TinyMCE-Textcolor, il ne semble pas avoir de commande exécutable ou aucune façon de détecter lorsque la couleur du texte change.

Le plugin TextColor ne déclenche plus l'événement execCommand car, puisqu'il l'engage, il utilise directement l' infrastructure Formatter . Donc, vous ne pouvez pas obtenir votre ancien événement.

Cependant, vous pouvez utiliser le formatChanged sur le formateur pour fournir un rappel:

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

Demo JSFiddle .

Mais cela va également déclencher, même si vous sélectionnez un texte déjà coloré … si malheureusement, ce n'est pas la meilleure alternative.

Bien sûr, le formatter.apply peut être corrigé par un singe pour déclencher l'ancien événement 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 .

Mais cela ne peut pas être fait globalement et doit être répété pour chaque instance de l'éditeur de tinymce, ce n'est donc pas la meilleure solution …