Tôi gặp sự cố khi phát triển các plugin CKEditor chèn nội dung không thể chỉnh sửa vào luồng văn bản. Tôi đã cố gắng sử dụng các chức năng phạm vi, nhưng với rất ít thành công vì tài liệu ít hơn sao. Vì vậy, đưa ra một số văn bản, cho phép nói chèn plugin "[[thứ không thể chỉnh sửa]]" và sau đó khi hiển thị WYSIWYG kết thúc tốt đẹp đó trong một khoảng để nó có thể được theo kiểu trong một màu:Vị trí con trỏ chuột CKEditor sau khi chèn phần tử không thể chỉnh sửa
<p>This is some text[[uneditable stuff here]]</p>
chèn Khi lần đầu tiên những thứ không thể chỉnh sửa, chúng tôi muốn người dùng có thể tiếp tục nhập hoặc nhấn Enter cho một dòng mới. Các mã sau đây (mà tôi có ở đây: How to set cursor position to end of text in CKEditor?) hoạt động trong Firefox nhưng (tự nhiên) không trong IE9, 8, hoặc 7:
var s = editor.getSelection();
editor.insertElement(e); // element 'e'= a span created earlier
var p = e.getParent();
s.selectElement(p);
var selected_ranges = s.getRanges();
selected_ranges[0].collapse(false); // false = to the end of the selected node
s.selectRanges(selected_ranges); // putting the current selection there
Vì vậy, những gì tôi muốn xảy ra là con trỏ đi ở vị trí "^" :
<p>This is some text<span>[[uneditable stuff here]]</span>^</p>
Nếu các yếu tố mới không phải là ở phần cuối của dòng, sau đó sau khi tạo nó, con trỏ nên đến đây:
<p>This is some text<span>[[uneditable stuff here]]</span>^ with more text after the new element</p>
Trong FF, tôi có thể lấy con trỏ ở cuối dòng mặc dù không ở vị trí sau phần tử mới. Trong IE, con trỏ vẫn nằm trong SPAN mới, mà tôi thấy khi tôi gõ và nó vẫn còn trong màu css của span, và khi chuyển sang dạng SOURCE, văn bản đã biến mất (vì nó là một khoảng không thể chỉnh sửa).
Tôi biết có phương thức range.setStartAfter, nhưng hoàn toàn không thể làm cho nó hoạt động ngay cả trong FF/Chrome.
Có ai có xử lý thực sự tốt về việc sử dụng các phương pháp lựa chọn và phạm vi trong CKEditor không? Tôi biết Tôi không!
Bắt đầu nghĩ rằng chỉ cần sử dụng editor.insertElement là sai và tôi nên tìm hiểu về các hàm FakeElement (insertBogus?) Mà tôi chưa hiểu. Các plugin cổ phiếu chẳng hạn như các liên kết và hình ảnh dường như không có vấn đề này.
Tôi đang cố gắng khắc phục sự cố này ngay bây giờ. Bạn đã có bất kỳ thành công với nó kể từ khi bạn đăng? – coyotesqrl