คำอธิบายเล็ก ๆ น้อย ๆ เกี่ยวกับ DOM


25

ฉันพยายามเข้าใจ DOM และแม้ว่าฉันจะมีความคิดที่เป็นธรรมว่ามันคืออะไรมีบางอย่างที่ฉันไม่สามารถปักหมุดได้ ฉันจะเขียนสิ่งที่ฉันคิดว่า DOM เป็นและคำถามของฉันจะเป็นแบบอินไลน์

  1. DOM เป็นการนำเสนอเชิงวัตถุอย่างเต็มรูปแบบของหน้าเว็บ มาตรฐาน W3C DOM เป็นพื้นฐานของ DOM ที่นำมาใช้ในเบราว์เซอร์ที่ทันสมัยที่สุด

    ดังนั้น DOM พูดคุยเกี่ยวกับวิธีแสดงเอกสาร XML / HTML เป็นแบบจำลองวัตถุได้อย่างไร

  2. DOM ไม่ได้ระบุว่าเอกสารจะต้องนำไปใช้เป็นต้นไม้หรือดงผลไม้และไม่ได้ระบุว่าจะนำความสัมพันธ์ระหว่างวัตถุมาใช้อย่างไร

    สามารถแสดงเอกสารในรูปแบบอื่นได้อย่างไร?

  3. เมื่อคุณทำอะไรเช่นนี้ -

    document.write('welcome to my home page!');

    วัตถุเอกสารให้บริการโดย DOM วิธีการเขียนเป็นอินเตอร์เฟสที่เปิดเผยกับ JavaScript โดย DOM

    ดังนั้นวัตถุและวิธีการจะถูกสร้างเป็นวัตถุ JavaScript โดย parser DOM แล้วนำเสนอให้กับเครื่องมือ JavaScript? หรือวัตถุและวิธีการภายในเครื่องมือแยกวิเคราะห์ DOM เป็นภาษาของตนเองหรือไม่ และสัมผัสกับเครื่องมือ JavaScript หรือไม่ ถ้าเป็นเช่นนั้นแล้วอะไรคือความรับผิดชอบในการแปลจาก JavaScript เป็นภาษาท้องถิ่น

  4. การผูกภาษาคืออะไร?

    การโยงภาษาคือชุดของวัตถุที่มีอยู่ในภาษาที่สงสัยซึ่งใช้แต่ละอินเตอร์เฟสในข้อกำหนด DOM

    นักพัฒนาสามารถสร้างการเชื่อมโยงภาษาจาก DOM เป็นภาษาของพวกเขาเพียงแค่ทำตาม IDL (Interface Definition Language) ในข้อมูลจำเพาะ DOM

    ดังนั้นหากใช้เครื่องมือแยกวิเคราะห์ DOM ใน C ++ หมายความว่าเมื่อคุณสร้างการเชื่อมภาษาโดยทำตาม IDL คุณกำลังสร้างวัตถุในภาษาเฉพาะเช่น C ++ ที่เอ็นจิ้นการแยกวิเคราะห์ DOM สร้างขึ้นด้วยหรือไม่


@apsillers มันควรจะเป็น "ดังนั้น DOM พูดคุยเกี่ยวกับวิธีการแสดงเอกสาร XML / HTML เป็นแบบวัตถุ?" ฉันแก้ไขโพสต์แล้ว
user1720897

ฉันจะตอบสิ่งที่ฉันสามารถทำได้ในความคิดเห็น 3 และ 4 อาจนำคนที่พัฒนาเบราว์เซอร์ให้ตอบคำถามจริงๆและฉันไม่ต้องการส่งผลกระทบต่อจำนวนคำตอบ 1 - เบราว์เซอร์มีความเข้าใจเกี่ยวกับสถานะปัจจุบันของเอกสารคุณสามารถเรียก DOM นี้หรือคุณสามารถเรียก DOM ว่าอินเตอร์เฟสมาตรฐานที่เปิดเผยซึ่งอนุญาตให้คุณสืบค้นและแก้ไขสถานะของเอกสาร
George Mauer

2 - คำแถลงเกี่ยวกับการนำไปปฏิบัติไม่ใช่การเป็นตัวแทน เว้นแต่ว่าฉันเข้าใจผิด '' การเป็นตัวแทน '' จะต้องเป็นต้นไม้ การนำเบื้องหลังมาใช้ไม่ได้
George Mauer

คำตอบ:


19

สิ่งที่ตามมาคือการอ่านข้อกำหนดและการอ้างอิงที่เกี่ยวข้องที่สุดของฉัน (ฉันพบบทคัดย่อของ Mozilla เกี่ยวกับระดับ DOMและลิงก์ที่เกี่ยวข้องเป็นประโยชน์อย่างยิ่ง) ฉันขอแนะนำให้แก้ไขหรือชี้แจงจากบุคคลอื่น

ดังนั้น DOM พูดคุยเกี่ยวกับวิธีแสดงเอกสาร XML / HTML เป็นแบบจำลองวัตถุได้อย่างไร

ใช่. มีสองส่วนจะ DOM ระดับ 1 คุณสมบัติ - แกนและHTML คอร์เปค DOM อธิบายทั่วไป DOM ที่สามารถนำมาใช้เพื่อเป็นตัวแทนของเอกสารโครงสร้างใด ๆ HTMLข้อกำหนด DOM อธิบายวิธีการใช้หลัก DOM เพื่ออธิบายเอกสาร HTML เฉพาะและรวมถึงการเชื่อมต่อ HTML เฉพาะ

DOM ไม่ได้ระบุว่าเอกสารจะต้องนำไปใช้เป็นต้นไม้หรือดงผลไม้และไม่ได้ระบุว่าจะนำความสัมพันธ์ระหว่างวัตถุมาใช้อย่างไร สามารถแสดงเอกสารในรูปแบบอื่นได้อย่างไร?

DOM Core จะถือว่าเอกสารนั้นเป็นแผนผัง Nodeอินเตอร์เฟซที่เป็น "... ประเภทข้อมูลหลักสำหรับทั้ง [DOM]. มันหมายถึงโหนดเดียวในต้นไม้เอกสาร ." Nodeมีคุณสมบัติหลายอย่างสำหรับเด็กเข้าถึงพี่น้องและโหนดผู้ปกครอง (เช่นparentNode, frstChildฯลฯ ) ที่แสดงถึงโครงสร้าง คุณสามารถใช้ต้นไม้แบนหรือต้นไม้เชิงเส้น (เช่นรายการที่เชื่อมโยง) แต่มันจะยังคงเป็นต้นไม้

ในฐานะที่เป็น George Mauer ชี้ให้เห็นในความคิดเห็นบางทีคุณอาจหมายถึงรูปแบบพื้นฐานของการใช้งานเฉพาะไม่จำเป็นต้องเป็นต้นไม้ นั่นเป็นเรื่องจริง ตราบใดที่การใช้งานของคุณมีฟังก์ชั่นที่สัญญาไว้ในข้อกำหนดคุณสมบัติของ DOM คุณสามารถใช้โครงสร้างใดก็ได้ที่คุณต้องการให้ใช้งาน

วัตถุและวิธีการภายในเครื่องมือวิเคราะห์คำ DOM เป็นภาษาของตนเองหรือไม่

โดยทั่วไปใช่ ในเบราว์เซอร์ส่วนใหญ่ DOM จะถูกนำไปใช้ในภาษาระดับต่ำกว่าเช่น C และเบราว์เซอร์จะเชื่อมโยงกับสภาพแวดล้อม JavaScript ที่สามารถจัดการการแสดงจริง ที่จริงแล้วถ้าคุณดูที่คำถามความหมายของ“ การย้าย DOM เข้าสู่ Javascript”? คุณจะเห็นว่า Google สนใจเปลี่ยนไปใช้ JavaScript DOM ดั้งเดิม (น่าจะหลีกเลี่ยงทั้งฟังก์ชัน C ++ และ JavaScript wrapper ซ้ำสำหรับฟังก์ชั่น C ++ นั้นอาจช่วยเพิ่มประสิทธิภาพได้เช่นกัน)

การแปลจาก JavaScript เป็นภาษาแม่คืออะไร

ฉันรู้สึกไม่ค่อยดีในเรื่องนี้ แต่ความเข้าใจของฉันก็คือเมื่อมีการเรียกใช้การรวม JavaScript DOM สภาพแวดล้อมการดำเนินการ JavaScript (ซึ่งถูกนำไปใช้ในภาษาระดับต่ำกว่าเช่น C) ทำให้การเรียกใช้ฟังก์ชัน DOM ที่เกี่ยวข้อง (เขียนใน C / C ++) เพื่อจัดการ DOM

หากคุณต้องการลึกกว่านั้นคุณจะต้องพูดคุยกับคนที่สร้างเบราว์เซอร์จริง

หมายความว่าเมื่อคุณสร้างการเชื่อมภาษาโดยทำตาม IDL คุณเพียงแค่สร้างออบเจ็กต์ในภาษาเฉพาะเช่น C ++ ที่เอ็นจิ้นการแยกวิเคราะห์ DOM ของคุณสร้างขึ้นด้วยหรือไม่

ใช่. IDL ของ DOM นั้นเป็นผู้ไม่เชื่อเรื่องภาษาดังนั้นคุณจึงสามารถใช้มันในภาษาใดก็ได้ "การเขียนการใช้งาน DOM" หมายถึงการเขียนรหัส (ในภาษาเฉพาะ) เพื่อให้สอดคล้องกับส่วนต่อประสาน IDL ที่อธิบายไว้ในข้อกำหนดคุณสมบัติของ DOM


ฉันเชื่อว่าการผูกจะต้องเกี่ยวข้องกับสองสิ่ง การเรียกใช้การรันแบบเนทีฟผ่านการอ้างอิงและวิธีการรับเหตุการณ์จากการนำไปใช้ คุณสามารถดูได้ว่าวิธีการใดเป็นเพียงแค่การห่อหุ้มโค้ดในเบราว์เซอร์ เช่นconsole.log(document.write);หรือconsole.log(document.constructor);- เพิ่ม.toString()log param ในเบราว์เซอร์ที่ไม่ให้ข้อความฟังก์ชัน วัตถุไม่จำเป็นต้องมีค่ามิเรอร์ที่เทียบเท่าในโค้ดเนทีฟ นอกจากนี้คุณสมบัติวัตถุ DOM ส่วนใหญ่เป็นผู้ได้รับพร้อมกับพฤติกรรมที่เกี่ยวข้อง
Erik Reppen
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.