TinyMCE 4: Как получить настоящий HTML-контент со страницы со многими встроенными редакторами DIV на одной странице? (сохранить в 1 файл)

В моей CMS у меня есть много DIV на одной HTML-странице со встроенным TinyMCE. У каждого DIV есть собственный экземпляр (#mce_0 и #mce_{randomnumber} )

Каждый редактируемый DIV находится внутри одного DIV-оболочки (нередактируемого) с определенным идентификатором (#MyWrapper).

Все, что находится внутри #MyWrapper (все DIV редактора), должно быть сохранено в ОДНОМ файле.

Когда я использую javascript для получения html из #MyWrapper, он работает хорошо, за исключением того, что я получаю HTML, используемый внутри редактора, вместо РЕАЛЬНОГО HTML, который я хочу иметь. Например, iframe (видео YouTube) превращаются в пример изображения вместо реального iframe.

Итак, затем я попытался получить HTML-код из редакторов (тот же HTML-код, который отображается, когда вы нажимаете «исходный код» внутри редактора).

Но я не преуспел.

Вот как работает мой существующий (работающий, но не получающий настоящий HTML) скрипт:

1) Получить весь HTML-контент в #MyWrapper

2) Jquery: добавьте его в не редактируемый и скрытый DIV под названием #ForSaving , чтобы я мог получить легкий доступ для его сохранения.

3) Затем у меня есть javascript, чтобы сохранить его в файл.

Сегодня задача №1 (выше) решается с помощью этого:

jQuery("#ForSaving").html(jQuery(".MyWrapper").html());

НО у меня должно быть решение для получения реального HTML из нескольких встроенных редакторов в DIV.

Я пробовал tinymce.get('...'); и т. д., но я не могу получить HTML-код из нескольких редакторов.

Любая помощь приветствуется. :-)

Дополнение: я нашел это, выполнив поиск «tinymce несколько экземпляров getcontent»: text-area">Как получить содержимое tinyMCE из более чем одной текстовой области

Тариама добавил ответ, говорящий использовать это:

for (i=0; i < tinyMCE.editors.length; i++){
    var content = tinyMCE.editors[i].getContent();
    alert('Editor-Id(' + tinyMCE.editors[i].id + '):' + content);
}

Однако я не понимаю, как совместить это с:

jQuery("#ForSaving").html(jQuery(".MyWrapper").html());

Я не очень хорошо разбираюсь в javascript-кодировании.

Я прошу вас помочь мне совместить их. Спасибо :-)


person Preben    schedule 03.11.2014    source источник


Ответы (1)


разве вы не должны просто использовать базы данных для этого? почти уверен, что вы подвергаете себя огромным недостаткам безопасности, позволяя сохранять такие файлы.

http://www.tinymce.com/wiki.php/API3:method.tinymce.Editor.getContent

прямо с сайта~

// Get the HTML contents of the currently active editor
console.debug(tinyMCE.activeEditor.getContent());

// Get the raw contents of the currently active editor
tinyMCE.activeEditor.getContent({format : 'raw'});

// Get content of a specific editor:
tinyMCE.get('content id').getContent()
person vico    schedule 03.11.2014
comment
Насколько я понимаю, они действительны только тогда, когда у вас есть 1 экземпляр tinyMCE на странице. Не тогда, когда у вас их несколько. Я сохраняю в плоский файл, но использую приведенное выше, чтобы собрать весь HTML в скрытом DIV, чтобы удалить часть содержимого HTML. Это также скрыто за логином. - person Preben; 04.11.2014
comment
в последней строке кода указано, что он получает контент через #id - person vico; 04.11.2014
comment
Возможно, я просто устал, но разве это не должно быть #mce_0 и т. д.? Или я могу использовать здесь #MyWrapper, и он будет получать контент из всех экземпляров TinyMCE внутри этого обертывающего div? - person Preben; 04.11.2014
comment
После тестирования многих вещей я могу подтвердить, что tinyMCE.get(#) получит только последний экземпляр #, а не все на одной странице. - person Preben; 04.11.2014
comment
Поскольку вы используете ID, если вы хотите зациклить все, что вы можете сделать, $('.myeditor').each() и это будет зацикливать каждый редактор и использовать указатель $(this) для получения содержимого - person vico; 16.01.2017