Я наткнулся на ту же проблему.
Я использую вкладки пользовательского интерфейса Jquery (библиотека jquery ui), и в каждой вкладке, которую я динамически создаю, я пытаюсь инициализировать экземпляр tinyMCE для textarea в каждойвкладка.Каждый раз, когда вы нажимаете кнопку, на сервер делается ajax-запрос для получения информации, а обработчик javascript создает новую вкладку с информацией.
Проблема, которая возникает, заключается в том, что при обратном вызове, когда сервервозвращается с ответом в вашем обработчике обратного вызова, если вы выполните следующий вызов в том же потоке
tinyMCE.execCommand("mceAddControl",false, "my_element" + elementid);
tinyMCE.get("my_element" + elementid).setContent("hello world!");
"tinyMCE.get (..)" вернет ноль.
Появляетсячто новый элемент управления mce, который вы добавляете, завершает свое создание только после того, как полностью завершится выполнение функции обработчика обратного вызова.
Поэтому вам нужно будет вызвать это:
tinyMCE.get("my_element" + elementid).setContent("hello world!");
Где-то еще,позже (по событию, вызванному впоследствии).
Обновление (Редактирование):
Так что я рассказал вам все это без реального тестирования.Но, наконец, у меня есть, и я подтверждаю, что это то, что происходит.Я сделал не очень красивый хак, где я использую таймер для запуска через 100 миллисекунд, например:
tinyMCEHack_timer = setTimeout("finish_setting_mce_content()",100);
В идеале вы захотите найти событие получше, чем это.
Вам также нужно будет найти способ передать данные из вашего обработчика обратного вызова ajax в ваш обработчик обратного вызова таймера.Опять же, это не красиво, но я использовал глобальную переменную (переменная, область действия которой - вся страница).
Удачи!