ทำไมต้องพูดถึง Textarea โดยเฉพาะ? เพราะโหนด textarea นั้นพิเศษมาก เนื่องจากโหนดนี้มีความพิเศษคำอธิบายของมันแตกต่างกันใน IE และเบราว์เซอร์อื่น ๆ
หยุดขายมันฮ่าฮ่า! ในความเป็นจริงเหตุผลหลักคือฉันช่วยพี่ชายอาวุโสซ่อมแซมข้อผิดพลาดในวันนี้ โดยเฉพาะมันล้มเหลวในการดึงข้อมูลจากเซิร์ฟเวอร์และแทรกลงใน textarea สถานการณ์นี้เกิดขึ้นใน IE เท่านั้น เบราว์เซอร์อื่น ๆ ทั้งหมดเป็นเรื่องปกติ!
ก่อนอื่นทำไม Textarea ถึงพิเศษ? ในทุกรูปแบบปลั๊กอินค่าของ textarea ถูกเขียนระหว่างสองแท็กเปิดและปิดดังนั้นค่าของมันจึงถือได้ว่าเป็นโหนดข้อความจากมุมมองของ DOM ซึ่งเป็นเอกลักษณ์ของ Textarea เนื่องจากคุณลักษณะนี้เมื่อคุณแก้ไขค่า innerHTML คุณยังสามารถเปลี่ยนข้อความของ textarea ได้ แม้ว่า IE รองรับการทำสิ่งนี้ แต่ก็ไม่อนุญาตให้มีสิ่งใด: แทรกแท็ก HTML บางอย่างแบบไดนามิก
คุณอาจทำการทดลองเช่นกัน:
ใส่รหัส HTML ชิ้นหนึ่งผ่าน JS ใน IE โดยใช้แอตทริบิวต์ InnerHTML แทนค่าหรือ InnerText
ฉันไม่ได้ทดสอบ IE9+แต่ IE6, 7 และ 8 จะรายงานข้อผิดพลาด
อาจเป็นเพราะเหตุผลด้านความปลอดภัยดังนั้น JS จึงไม่ได้รับอนุญาตให้แทรก HTML ลงใน Textarea แบบไดนามิก แต่ผู้คนที่ระมัดระวังสามารถพบว่าหากคุณพิมพ์รหัส HTML ด้วยตนเอง Textarea เป็นที่ยอมรับ ฉันคิดว่าสิ่งนี้ผ่านกระบวนการเช่นนี้: ตัวละครหลบหนี ใช่นี่เป็นเหตุผลเดียวที่รหัส HTML แบบแมนนวลประสบความสำเร็จ
ดังนั้นในความคิดของฉันเนื่องจากเบราว์เซอร์จำนวนมาก textareas ไม่รองรับการแสดงผล HTML ทำไมคุณยังต้องใช้แอตทริบิวต์ InnerHTML เมื่อทำงาน JS? กล่าวอีกนัยหนึ่งไม่ว่าคุณจะใส่รหัส HTML ด้วยค่าหรือ innerHTML ด้วยรหัส HTML มันจะไม่ถูกแยกวิเคราะห์และแสดง (ดังนั้นจะมีตัวแก้ไขข้อความที่หลากหลายแทน textarea) ดังนั้นทำไมไม่ใช้ค่าเพื่อตั้งค่า textarea?
ดังนั้นฉันคิดว่าการตั้งค่าของ textarea ไม่ควรผ่าน innerhtml (แน่นอนว่ามันเป็นไปไม่ได้ที่จะเป็น innertext เนื่องจาก firefox) แต่ควรตั้งค่าผ่านมูลค่า นี่คือสิ่งที่นักพัฒนาควรให้ความสนใจ เพราะฉันเพิ่งอ่านรหัสรองเท้าสำหรับเด็กที่ชอบใช้ InnerHTML เสมอ ที่จริงแล้วฉันคิดว่านี่เป็นเรื่องเกี่ยวกับโอกาส