Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> JavaScript

ทำไม Stray HTML </p> End Tag ถึงสร้าง Empty Paragraph?

กฎของ HTML Parser

ตาม HTML Spec: หากพบ </p> ที่ไม่มี <p> เปิดอยู่ Parser จะสร้าง <p> ว่างขึ้นมาให้อัตโนมัติ แล้วปิดมันทันที

เหตุผล

  • HTML4 DTD: </p> เป็น Optional End Tag แต่ <p> Start Tag Required
  • SGML Declaration: OMITTAG YES - Start Tag สามารถ Omit ได้ (Implied)
  • Parser Logic: พบ End Tag โดยไม่มี Start Tag -> Implicitly สร้าง Start Tag ขึ้นมา

ตัวอย่าง

<div>
  <p>Paragraph 1
  </p></p> <!-- Stray end tag -->
</div>

จะกลายเป็น: <p>Paragraph 1</p><p></p> (Empty paragraph ที่ 2)

แนวทางปฏิบัติ: เขียน HTML ให้ถูกต้อง ปิด Tag ครบถ้วน ใช้ Validator ตรวจสอบ