Подтвердить что ты не робот

Получить форматированный HTML из CKEditor

Я использую CKEditor в своем веб-приложении, и я не понимаю, как получить содержимое редактора с форматированием HTML.

var objEditor = CKEDITOR.instances["sectionTextArea"];
var q = objEditor.getData();

Это даст мне текст, введенный в CKEditor, без какой-либо разметки.

Однако

var q = objEditor.getHTML();

вернет нулевое значение. Что я делаю неправильно?

4b9b3361

Ответ 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 из элемента редактора.