运行 命令标识符 RemoveFormat 在 运行 Tinymce 中的当前命令之前

Run command identifier RemoveFormat prior to running current command in Tinymce

我有一些自定义样式格式设置,可以将 class 添加到所选文本。如果用户选择一个新的,我有一个清除 formatting/classes 的请求。他们不需要分配多个 classes。理想情况下,我不必为 tinymce 修改任何核心文件,但如果有必要,我愿意这样做。

我的想法是捕捉格式选择,然后 运行 RemoveFormat 但它似乎会先 运行 初始命令。它将格式化然后删除格式。我想知道是否有办法先保存初始请求和 运行 RemoveFormat,然后再设置新的格式。此外,如果有更好的方法来做到这一点,我也对此持开放态度。我使用的是 4.7 版。

 ed.on('ExecCommand', function checkListNodes (evt) {
   let cmd = evt.command
   if (cmd === 'mceToggleFormat') {
      this.execCommand('RemoveFormat', false, '');
   }
}

提前致谢

我找到了解决办法。有点hacky,但可以完成工作。我在 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])
  }
});