Невозможно опубликовать дважды из одной и той же текстовой области AJAX TinyMCE - PullRequest
5 голосов
/ 31 марта 2009

У меня есть список элементов, редактируемых с помощью простой кнопки редактирования AJAX / jQuery, которая прекрасно работает. Но когда я пытаюсь редактировать то же поле во второй раз, он не хочет играть в мяч.

  1. EDIT - AJAX возвращает текстовую область tinyMCE, содержащую контент из MySQL
  2. SAVE - AJAX отправляет содержимое tinyMCE в MySQL и отображает опубликованное содержимое
  3. РЕДАКТИРОВАТЬ (снова) - Возвращает ту же текстовую область tinyMCE и содержимое, что и обычно
  4. СОХРАНИТЬ (снова) - При повторном попытке сохранения возвращается ошибка: g.win.document равен нулю

Фрагменты кода

var content = tinyMCE.get('content').getContent(); //get tinyMCE content
$("#edititem").load("editItem.php", {content: content}); //jQuery post

Решение - вот как я его заработал:

EDIT - при редактировании добавьте элемент управления tinyMCE к текстовой области

tinyMCE.execCommand("mceAddControl",true,'content');

SAVE - при сохранении снимите элемент управления в следующий раз

tinyMCE.execCommand('mceRemoveControl',false,'content');

Ответы [ 4 ]

2 голосов
/ 20 мая 2010

Просто подумал, что добавлю обходное решение, которое работает в сочетании с решением выше:

setTimeout(function() {tinyMCE.execCommand("mceAddControl", true, "content");}, 5);

По какой-то причине я не уверен, является ли это проблемой синхронизации с манипуляцией DOM или чем-то еще, но небольшая задержка делает жизнь лучше. Однако setTimeout() НЕ работал в сочетании с использованием метода jQuery .each(), такого как:

$("textarea").each(function(index) {
    tinyMCE.execCommand("mceAddControl", false, $(this).attr("id"));
});

Это должно быть совсем другое время.

В любом случае, я подумала, что поделюсь этими результатами, так как я уверен, что другие и даже, возможно, я снова сочтем эту публикацию полезной.

2 голосов
/ 20 июля 2010
$(tinyMCE.editors).each(function(){
                            tinyMCE.remove(this);
                        });
1 голос
/ 31 марта 2009

Я больше знаком с FCKeditor, но я думаю, что это похоже. TinyMCE имеет команду mceAddControl для добавления / создания экземпляров редактора. Вы делаете это после перезагрузки контента?

tinyMCE.execCommand('mceAddControl' ...
0 голосов
/ 26 октября 2014

Для tinymce 3.2.x используйте следующее для удаления экземпляра tinyMCE в IE8 или любом другом браузере. Так как функция tinymce.execCommand делает поля ввода не редактируемыми в IE8.

tinyMCE.remove(editor); //editor is instance of tinymce editor and not editor id

Это исправит ошибку «Отказано в доступе» без отключения других полей ввода на той же странице.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...