Полностью перезагрузить TinyMCE - PullRequest
2 голосов
/ 14 сентября 2011

Я уже некоторое время пишу CMS и в настоящее время делаю последние несколько изменений.один из которых включает использование ajax для доставки редактора tinyMCE в окне в стиле лайтбокса.

при загрузке в первый раз, когда он работает отлично, но когда я делаю это во второй или более раз, имена элементов получаютиспортил и не отправляет данные обратно, или отображает текущее значение в окне TinyMCE.Когда я использую Chrome для проверки элемента, я вижу, что диапазон, который содержит предыдущее окно tinyMCE, все еще там.

Я использую document.body.removeChild, чтобы удалить div, который его держит.У кого-нибудь есть идеи?

Добавление:

, когда AJAX возвращается после выполнения запроса (он имеет весь HTML-код того, что идет в окне), онсоздает новый элемент div и использует document.body.appendChild для добавления элемента в документ и помещает HTML-код в тег div.

Затем он перемещается по новому коду и ищет скрипты в этой области.(один из которых является инициатором MCE) и добавляет их к заголовку, чтобы они выполнялись.

если пользователь нажимает кнопку отмены, а не сохранения, он удаляет тег div с помощью: document.body.removeChild (document.getElementById ( "popupbox"));который работает нормально,

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

Я использовал: tinyMCE.execCommand ('mceRemoveControl', true, 'mce {$ Setting [')название']}');tinyMCE.editors [0] .destroy ();

, но ни один из них не работает.Они возвращают окно tinymce текстовой области, но элементы все еще там.

1 Ответ

1 голос
/ 15 сентября 2011

Удаление редактора, как вы описали (с использованием правильного идентификатора редактора tinymce) перед перемещением или удалением html-элемента, содержащего iframe tinymce, является хорошим выбором.Где вы загружаете свой tinymce.js?Если вы доставите его с помощью ajax, я думаю, что было бы лучше загрузить его на родительскую страницу (!).Еще немного кода было бы полезно.

РЕДАКТИРОВАТЬ: Я помню ситуацию, когда мне пришлось удалить оставшийся промежуток.Вот мой код для этого:

        // remove leftover span
        $('div .mceEditor').each(function(item){

            if (typeof $(this).attr('style') !== "undefined" ){
                $(this).removeAttr('style'); // entfernt "style: none";
            }
            else {
                $(this).remove();
            }
        }); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...