ฉันใช้กล่องโต้ตอบ jquery เพื่อนำเสนอแบบฟอร์ม (ดึงข้อมูลผ่าน AJAX) ในบางรูปแบบฉันใช้ CKEditor สำหรับ textareas ตัวแก้ไขแสดงผลได้ดีในการโหลดครั้งแรก
เมื่อผู้ใช้ยกเลิกกล่องโต้ตอบฉันกำลังลบเนื้อหาเพื่อให้มีการโหลดใหม่ตามคำขอในภายหลัง ปัญหาคือเมื่อกล่องโต้ตอบถูกโหลดซ้ำ CKEditor อ้างว่ามีตัวแก้ไขอยู่แล้ว
uncaught exception: [CKEDITOR.editor] The instance "textarea_name" already exists.
API มีวิธีการทำลายบรรณาธิการที่มีอยู่และฉันเคยเห็นคนที่อ้างว่านี่เป็นวิธีแก้ปัญหา:
if (CKEDITOR.instances['textarea_name']) {
CKEDITOR.instances['textarea_name'].destroy();
}
CKEDITOR.replace('textarea_name');
สิ่งนี้ไม่ได้ผลสำหรับฉันเนื่องจากฉันได้รับข้อผิดพลาดใหม่แทน:
TypeError: Result of expression 'i.contentWindow' [null] is not an object.
ข้อผิดพลาดนี้ดูเหมือนจะเกิดขึ้นบน "destroy ()" แทนที่จะเป็น "replace ()" มีใครประสบปัญหานี้และพบวิธีแก้ปัญหาอื่น ๆ หรือไม่?
เป็นไปได้ไหมที่จะ 're-render' โปรแกรมแก้ไขที่มีอยู่แทนที่จะทำลายและแทนที่
อัปเดต นี่คือคำถามอื่นที่เกี่ยวข้องกับปัญหาเดียวกัน แต่เขาได้จัดเตรียมกรณีทดสอบที่ดาวน์โหลดได้