Настройка контента TinyMCE - PullRequest
0 голосов
/ 06 ноября 2019

Я пытаюсь установить содержимое редактора TinyMCE, но мне не очень везет. Я пытался как установить HTML-код заранее и инициализировать редактор, так и установить контент после инициализации редактора, но безрезультатно - я могу воспроизвести его в этой скрипке (не могусначала воспроизведите настройку содержимого, поскольку для его установки используется переменная HTML из базы данных).

Практически все, что я пытаюсь сделать, это с помощью моего собственного кода:

            Editor.innerHTML += '<label>Description</label><br><div id="AC-Description">' + data.Data.Description + '</div><br><br>'; // Editor is just a div & data is a json object return from an ajax call
            tinymce.init({
                selector: '#AC-Description'
            });
            tinymce.activeEditor.setContent(data.Data.Description); // does not work, same as in example fiddle.
            tinymce.get('AC-Description').setContent(data.Data.Description); // does not work either, same as in example fiddle

Перед инициализацией редактора data.Data.Description отображает текст в DIV изатем TinyMCE игнорирует его при инициализации.

Я просто растерялся, тем более что он не работает и на JSFiddle. У кого-то еще были проблемы с этим и / или я что-то упустил?

Ответы [ 2 ]

1 голос
/ 06 ноября 2019

Попробуйте установить содержимое после инициализации редактора, прослушивая событие init , например:

tinymce.init({
                selector: '#Editor'
            });

tinymce.get('Editor').on('init', function(e){
                e.target.setContent('test'); 
            });
0 голосов
/ 14 ноября 2019

Не видя работающего кода, я не могу сказать наверняка, но проблема здесь почти наверняка связана с проблемой времени запуска вашего JavaScript.

Функция TinyMCE init() имеет значение асинхронный . Когда вы звоните init(), процесс занимает некоторое время. В вашем примере кода вы сразу же пытаетесь вызвать либо activeEditor, либо get(), но, скорее всего, инициализированный редактор отсутствует, поэтому обе эти попытки заканчиваются неудачей.

Правильный способ убедиться, что TinyMCE полностью инициализирован, - это использовать событие init. Это событие вызывается после полной инициализации TinyMCE и готовности к взаимодействию.

Чтобы загрузить контент через init(), вы можете сделать что-то вроде этого:

tinymce.init({
  selector: "textarea",
  plugins: ["advlist autolink lists ..."],
  toolbar: "undo redo | bullist numlist ...",
  setup: function (editor) {
    editor.on('init', function (e) {
      //this gets executed AFTER TinyMCE is fully initialized
      editor.setContent('<p>This is content set via the init function</p>');
    });
  }
});  
...