سؤال

أنا أستخدم ckeditor في تطبيق الويب الخاص بي، وأنا في خسارة حول كيفية الحصول على محتويات المحرر بتنسيق HTML.

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

سيحصل ذلك على النص الذي تم إدخاله في ckeditor، دون أي علامات.

ومع ذلك،

var q = objEditor.getHTML();

سوف ترجع قيمة فارغة. ما الخطأ الذي افعله؟

هل كانت مفيدة؟

المحلول

Gethtml ليس طريقة كائن ckeditor، لذلك بدلا من null يجب أن يكون لديك خطأ JavaScript.

الطريقة المحددة من قبل API هي احصل على البيانات() إذا لم ينجح ذلك، فلديك مشكلة أخرى في التعليمات البرمجية، فحاول استخدام تنبيه للتحقق من المحتويات في تلك اللحظة.

نصائح أخرى

فقط لمعرفة أن الطريقة الصحيحة لهذا هو getData() لم يساعدني لم أكن أعرف كيفية استخدامه على كائن ckeditor. و CKEDITOR.getData() لا يعمل.

هذه هي الطريقة getData() يستخدم على كائن ckeditor:

CKEDITOR.instances.my_editor.getData()

...أين my_editor هو معرف Textarea المستخدمة في ckeditor.

عكس ذلك هو setData():

CKEDITOR.instances.my_editor.setData("<p>My Text</p>");

للحصول على HTMLDATA من المحرر، يجب عليك استخدام رمز Snippet BEWLE:

var htmldata = CKEDITOR.instances.Editor.document.getBody().getHtml();

إذا كان هذا الحل لن يعمل، تحقق مما إذا كان لديك BBCode الإضافات إلغاء تثبيتها.

يرجى تحديث ckeditor config.js مع السطر التالي

config.fullPage = true;

سيؤدي ذلك إلى إرجاع HTML الكامل عند طلب GetDATA ()؛

هذا عملت بالنسبة لي:

CKEDITOR.instances["id"].getData()

أنا أستخدم البرنامج المساعد المعاينة للحصول على محتوى HTML الكامل، آمل أن يساعد ذلك.

CKEDITOR.getFullHTMLContent = function(editor){
	var cnt = "";
	editor.once('contentPreview', function(e){
		cnt = e.data.dataValue;
		return false;
	});
	editor.execCommand('preview');
	
	return cnt;
}

بالنسبة لمستخدمي جافا ...

بعد الضغط على زر إرسال، يذهب الطلب بواسطة طريقة نشر HTTP. يحتوي طلب المشاركة هذا أيضا على HTML المنسق في المعلمة المسماة باستخدام سمة الاسم من Textarea.

لذلك، إذا كان Textarea الخاص بك شيء مثل ...

<form method="post" action="createPDF.do"> <textarea name="editor1" id="editor1"/>
<input type="submit"/> </form>

بعد ذلك، بعد الضغط على زر إرسال، يمكنك الحصول على HTML المنسق في Serverlet / Controller بواسطة:

String htmlContent = request.getParameter("editor1");

يمكنك أيضا نقل هذا المتغير الذي يحتوي على HTML المنسق ("HTMLContent") إلى iText (أو بعض محولات PDF الأخرى) لإنشاء PDF ...

أدرك أن هذا قديم، لكن لدي مشكلة في العثور على إجابة تعسف وعادت HTML الفعلي، بما في ذلك الصور. إذا تم إرفاق مثيل CKEditor الخاص بك إلى Textarea، فيمكنك بسهولة الحصول على قيمة Textarea للحصول على HTML.

على سبيل المثال، إذا كنت تستخدم JQuery:

$('#my_editor').val()

لا حاجة للذهاب حفر من خلال API.

إذا كان لديك اثنين ckeditor., ، يمكنك استخدام رمز رفع الصوت عاليا:

لغة البرمجة

<textarea name="editor1"></textarea>
<textarea name="editor2"></textarea>

ج إس

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)

جرب هذا:

CKEDITOR.instances.YOUREDITOR.element.getHtml();

مع ckeditor.instress.youreditor.element يمكنك تحديد عنصر DOM وإذا كنت تستخدم ckeditor.instances.youreditor.element.gethtml ()؛ يمكنك الحصول على جميع HTML من عنصر المحرر.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top