Запустите идентификатор команды RemoveFormat до запуска текущей команды в Tinymce - PullRequest
0 голосов
/ 01 апреля 2019

У меня есть несколько пользовательских форматов, которые добавят класс к выбранному тексту. У меня есть просьба очистить форматирование / классы, если пользователь выбирает новый. Им не нужно назначать несколько классов. В идеале мне не нужно изменять какие-либо файлы ядра для tinymce, но я хочу сделать это при необходимости.

Мой мыслительный процесс состоит в том, чтобы отловить выбор форматирования и затем запустить RemoveFormat, но кажется, что сначала он выполнит начальную команду. Это отформатирует и затем удалит форматирование. Мне интересно, есть ли способ удержать первоначальный запрос и сначала запустить RemoveFormat, а затем установить новое форматирование. Также, если есть лучший способ сделать это, я также открыт для этого. Я на версии 4.7.

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

Заранее спасибо

1 Ответ

0 голосов
/ 02 апреля 2019

Мне удалось найти решение. Немного хакерский, но выполняет свою работу. Я установил переменную перед оператором 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])
  }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...