2010-03-14 58 views
27

Tôi đang sử dụng CKEditor trong ứng dụng web của mình và tôi không biết cách lấy nội dung của trình chỉnh sửa có định dạng HTML.Nhận HTML được định dạng từ CKEditor

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

Điều này sẽ cho tôi văn bản được nhập trong CKEditor, không có bất kỳ đánh dấu nào.

Tuy nhiên,

var q = objEditor.getHTML(); 

sẽ trả về một giá trị null. Tôi đang làm gì sai?

Trả lời

20

getHTML không phải là phương thức của đối tượng CKEditor, vì vậy thay vì null, bạn nên có lỗi javascript.

Phương pháp được xác định bởi api là getData() nếu phương thức đó không hoạt động thì bạn có một số vấn đề khác trong mã của bạn, hãy thử sử dụng cảnh báo để xác minh nội dung tại thời điểm đó.

+0

-1 để đưa ra lời khuyên xấu ('[...], hãy cố sử dụng cảnh báo để xác minh nội dung tại thời điểm đó.') – WoIIe

+1

Nếu bạn muốn sử dụng một số console.log, bạn nên nhận ra rằng người dùng đã cố gắng sử dụng một phương pháp không tồn tại, vì vậy nếu anh ta đã nhìn vào giao diện điều khiển, anh ta sẽ thấy lỗi. Thay vì giải thích cho anh ta tất cả các chi tiết về cách gỡ lỗi javascript (và có thể cần cài đặt thêm một số tiện ích bổ sung hoặc chuyển trình duyệt, hãy nhớ rằng anh ta đã hỏi cách đây bốn năm), phương pháp chống đạn là sử dụng cảnh báo cung cấp thông tin và không cần phải giải thích thêm. – AlfonsoML

+0

IMHO, sử dụng cảnh báo cho mục đích gỡ lỗi là thực hành rất xấu và không nên được khuyến khích cho bất cứ ai một cách liều lĩnh. (Vì SO là một nguồn tài nguyên nổi tiếng đặc biệt dành cho người mới bắt đầu) – WoIIe

5

Vui lòng cập nhật config.js ckeditor với dòng sau

config.fullPage = true; 

này sẽ trả lại toàn bộ html khi bạn yêu cầu getData();

7

Để có được htmlData từ biên tập, bạn nên sử dụng đoạn mã dưới đây:

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

Nếu giải pháp này sẽ không hoạt động, kiểm tra xem bạn có BBCode plugins gỡ cài đặt.

+1

Thankyou rất nhiều .. bạn tiết kiệm ngày của tôi ... – Gowri

+2

tài liệu ngoại lệ là undefinded –

0

cho Người dùng Java ...

Sau khi nhấn nút gửi, yêu cầu trôi qua HTTP viết phương pháp. Yêu cầu Post này cũng chứa html được định dạng trong tham số có tên sử dụng thuộc tính name của textarea.

Vì vậy, nếu textarea của bạn là một cái gì đó giống như ...

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

Sau đó, sau khi nhấn nút gửi, bạn có thể nhận được định dạng html trong servlet của bạn/điều khiển theo:

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

Bạn cũng có thể chuyển biến này chứa html được định dạng ('htmlContent') sang ITEXT (hoặc một số trình chuyển đổi pdf khác) để tạo bản ...

0

Tôi nhận ra điều này là cũ, nhưng tôi đã gặp khó khăn trong việc tìm kiếm câu trả lời có ý nghĩa và trả lại HTML thực tế, bao gồm cả hình ảnh. Nếu cá thể ckeditor của bạn được gắn vào một vùng văn bản, bạn có thể đơn giản nhận được giá trị của vùng văn bản để lấy HTML.

Ví dụ, nếu bạn đang sử dụng jQuery:

$('#my_editor').val() 

Không cần phải đi đào bới qua API.

+0

điều này không làm việc cho tôi. mà không có sửa đổi dường như không có dữ liệu trong vùng văn bản, tất cả dữ liệu nằm bên trong khung nội tuyến. –

+0

Không biết phải nói gì với bạn. Tôi có điều này làm việc trong sản xuất. Có lẽ bạn cần sử dụng lệnh jquery để tạo ra nó? '$ j ('# element'). ckeditor();' – UltimateBrent

16

chỉ để biết rằng phương pháp phù hợp cho việc này là getData() không giúp tôi. Tôi không biết cách sử dụng nó trên đối tượng CKEditor. và CKEDITOR.getData() không hoạt động.

đây là cách getData() được sử dụng trên các đối tượng ckeditor:

CKEDITOR.instances.my_editor.getData() 

... nơi my_editor là id của textarea của bạn sử dụng cho ckeditor.

Điều ngược lại của nó là setData():

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

điều này thực sự đã cứu ngày của tôi! cảm ơn bạn! – sulhadin

+0

@sulhadin bạn được chào đón! –

1

Tôi đang sử dụng các plugin xem trước để có được nội dung HTML đầy đủ, hy vọng nó sẽ giúp.

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

4

này đã làm việc cho tôi:

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

Hãy thử điều này:

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

với CKEDITOR.instances.YOUREDITOR.element bạn chọn một phần tử DOM và nếu bạn sử dụng CKEDITOR.instances.YOUREDITO R.element.getHtml(); bạn có thể nhận tất cả html từ phần tử biên tập.

+0

Vui lòng không thêm chỉ một dòng. Giải thich câu trả lơi của bạn. –

+0

var editor = CKEDITOR.instances.YOUREDITOR; –

+0

xin lỗi, khi chọn một trình chỉnh sửa, bạn có thể chọn một phần tử DOM –

0

Nếu bạn có hai ckeditor, bạn có thể sử dụng mã dưới đây:

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 

Online Demo (jsfiddle)

Các vấn đề liên quan