我有一些自定义样式格式设置,可以将一个类添加到所选文本。如果用户选择新的格式/类,我有一个要求清除格式/类的请求。他们不需要分配多个类。理想情况下,我不必为tinymce修改任何核心文件,但在必要时愿意这样做。
我的思维过程是捕捉格式的选择,然后运行RemoveFormat,但似乎它将首先运行初始命令。它将格式化,然后删除格式。我想知道是否有一种方法来保存初始请求并先运行RemoveFormat,然后设置新的格式。同样,如果有更好的方法可以做到这一点,我也愿意接受。我使用的是4.7版。
ed.on('ExecCommand', function checkListNodes (evt) {
let cmd = evt.command
if (cmd === 'mceToggleFormat') {
this.execCommand('RemoveFormat', false, '');
}
}
预先感谢
答案 0 :(得分:0)
我能够找到解决方案。有点笨拙,但可以完成工作。我在tinymce init语句之前设置了变量。因此,它将运行格式化,然后清除所选内容的所有格式并发送最初选择的选项。清除格式后,它将再次运行格式,但是这次不会通过检查已切换为true的变量来删除格式。
let doNotRemoveFormat = false;
setup: function (ed) {
ed.on('ExecCommand', function checkListNodes (evt) {
if (cmd === 'mceToggleFormat') {
if(!doNotRemoveFormat) {
let val = 'runThis|' + evt.value;
this.execCommand('RemoveFormat', false, val);
} else {
doNotRemoveFormat = false;
}
} else if (cmd === 'RemoveFormat') {
let value = evt.value.split("|");
if(value[0] === 'runThis') {
doNotRemoveFormat = true;
this.execCommand('mceToggleFormat', false, value[1])
}
});