Đọc qua số CKEditor documentation, tôi thấy rằng họ có tùy chọn hủy một phiên bản với CKEDITOR.instances.instanceName.destroy();
. Tuy nhiên, nếu DOM đã thay đổi, và toàn bộ cấu trúc WYSIWYG DOM đã được gỡ bỏ, tôi nhận được lỗi sau trong Chrome:CKEditor - hủy một phiên bản khi nút DOM đã bị xóa
Uncaught TypeError: Cannot read property 'document' of null
... và một sau đây trong Firefox:
i.contentWindow is null
Có cách nào để giải quyết vấn đề này không?
Do cách ứng dụng của tôi được cấu trúc (tải nội dung qua AJAX), tôi không thể gọi .destroy()
khi các yếu tố vẫn còn trên trang.
Điều này giải quyết một vấn đề tương tự (giống nhau?) Cho tôi (thay thế ckeditor dựa trên sự trở lại của cuộc gọi AJAX) nhưng tôi vẫn nhận được Uncaught TypeError (giống như trong OP). Tôi không chắc chắn nếu có bất kỳ tác dụng phụ nhưng tôi muốn thoát khỏi thông báo lỗi. Mã của tôi để tải trình chỉnh sửa là:
window.makeCkEditor = function(e, w, h) { var cki, config, ei; ei = CKEDITOR.instances[e]; if (ei) ei.destroy(true); config = { width: w, height: h }; return cki = CKEDITOR.replace(e, config); };
Bất kỳ ý tưởng nào về cách tôi có thể loại bỏ thông điệp đó? –@KenThompson: Tôi có một cách tiếp cận khác, nhưng bạn đã cố gắng phá hủy đối tượng ck trước cuộc gọi AJAX chưa? –
phá hủy (đúng) dường như hoạt động:) – bjunix