Получить форматированный HTML из CKEditor
Я использую CKEditor в своем веб-приложении, и я не понимаю, как получить содержимое редактора с форматированием HTML.
var objEditor = CKEDITOR.instances["sectionTextArea"];
var q = objEditor.getData();
Это даст мне текст, введенный в CKEditor, без какой-либо разметки.
Однако
var q = objEditor.getHTML();
вернет нулевое значение. Что я делаю неправильно?
Ответы
Ответ 1
getHTML не является методом объекта CKEditor, поэтому вместо null вы должны иметь ошибку javascript.
Метод, определяемый api, getData(), если это не работает, тогда у вас есть еще одна проблема в коде, попробуйте используйте оповещение, чтобы проверить содержимое в этот момент.
Ответ 2
просто знать, что правильный метод для этого getData()
мне не помог. Я не знал, как использовать его на объекте CKEditor. и CKEDITOR.getData()
не работает.
вот как getData()
используется для объекта CKEDITOR:
CKEDITOR.instances.my_editor.getData()
... где my_editor
- это идентификатор вашего текстового поля, используемого для CKEditor.
Противоположность этому setData()
:
CKEDITOR.instances.my_editor.setData("<p>My Text</p>");
Ответ 3
Чтобы получить htmlData из редактора, вы должны использовать фрагмент кода ниже:
var htmldata = CKEDITOR.instances.Editor.document.getBody().getHtml();
Если это решение не будет работать, проверьте, не удалены ли BBCode
плагины.
Ответ 4
Обновите ckeditor config.js со следующей строкой
config.fullPage = true;
Это приведет к возврату полного html при запросе getData();
Ответ 5
Это сработало для меня:
CKEDITOR.instances["id"].getData()
Ответ 6
Я использую плагин предварительного просмотра, чтобы получить полный HTML-контент, надеюсь, что это поможет.
CKEDITOR.getFullHTMLContent = function(editor){
var cnt = "";
editor.once('contentPreview', function(e){
cnt = e.data.dataValue;
return false;
});
editor.execCommand('preview');
return cnt;
}
Ответ 7
Для пользователей Java...
После нажатия кнопки отправки запрос отправляется методом HTTP Post. Этот запрос также содержит форматированный html в параметре с именем, использующим атрибут name в текстовом поле.
Итак, если ваше текстовое поле похоже на...
<form method="post" action="createPDF.do"> <textarea name="editor1" id="editor1"/>
<input type="submit"/> </form>
Затем, нажав кнопку отправки, вы можете получить форматированный html в своем сервлете/контроллере:
String htmlContent = request.getParameter("editor1");
Вы также можете передать эту переменную, содержащую форматированный html ('htmlContent'), в ITEXT (или некоторые другие PDF-конвертеры), чтобы создать pdf...
Ответ 8
Я понимаю, что это старо, но мне не удалось найти ответ, который имел смысл и вернул фактический HTML, включая изображения. Если ваш экземпляр ckeditor прикреплен к текстовой области, вы можете просто получить значение textarea для получения HTML.
Например, если вы используете jQuery:
$('#my_editor').val()
Не нужно копаться через API.
Ответ 9
Если у вас есть два CKEditor, вы можете использовать следующий код:
HTML
<textarea name="editor1"></textarea>
<textarea name="editor2"></textarea>
JS
CKEDITOR.replace( 'editor1' );
CKEDITOR.replace( 'editor2' );
var objEditor1 = CKEDITOR.instances["editor1"];
alert(objEditor1.getData()); // get html data
var objEditor2 = CKEDITOR.instances["editor2"];
alert(objEditor2.getData()); // get html data
Онлайн-демонстрация (jsfiddle)
Ответ 10
Попробуйте следующее:
CKEDITOR.instances.YOUREDITOR.element.getHtml();
с CKEDITOR.instances.YOUREDITOR.element вы выбираете элемент DOM, и если вы используете
CKEDITOR.instances.YOUREDITOR.element.getHtml();
вы можете получить все html из элемента редактора.