ฉันเห็นว่าข้อกำหนดเหล่านี้ใช้แทนกันได้เป็นสภาพแวดล้อมทั่วโลกสำหรับ DOM อะไรคือความแตกต่าง (ถ้ามี) และฉันควรใช้แต่ละอันเมื่อใด
ฉันเห็นว่าข้อกำหนดเหล่านี้ใช้แทนกันได้เป็นสภาพแวดล้อมทั่วโลกสำหรับ DOM อะไรคือความแตกต่าง (ถ้ามี) และฉันควรใช้แต่ละอันเมื่อใด
คำตอบ:
Windowเป็นรูทวัตถุหลักของ JavaScript หรือที่เรียกว่าglobal objectในเบราว์เซอร์และยังสามารถใช้เป็นรูทของโมเดลวัตถุเอกสารได้ คุณสามารถเข้าถึงมันเป็นwindow
window.screenหรือเพียงแค่screenเป็นวัตถุข้อมูลขนาดเล็กเกี่ยวกับขนาดหน้าจอทางกายภาพ
window.documentหรือเพียงแค่documentเป็นวัตถุหลักของแบบจำลองวัตถุเอกสารที่มองเห็นได้ (หรือดีกว่า: แสดงผล)
เนื่องจากwindowเป็นวัตถุโกลบอลคุณสามารถอ้างอิงคุณสมบัติใด ๆ ของมันด้วยชื่อคุณสมบัติ - ดังนั้นคุณไม่จำเป็นต้องจดบันทึกwindow.- มันจะถูกคำนวณโดยรันไทม์
windowกับวิวพอร์ต A windowคือวัตถุ JavaScript สำหรับแท็บเบราว์เซอร์หรือ<iframe>(หรือเลิกใช้งาน<frame>) วิวพอร์ตเป็นรูปสี่เหลี่ยมผืนผ้าของการแสดงผลdocumentที่เห็นภายในแท็บหรือกรอบ
หน้าต่างเป็นสิ่งแรกที่โหลดเข้าไปในเบราว์เซอร์ วัตถุหน้าต่างนี้มีคุณสมบัติส่วนใหญ่เช่นความยาว, InnerWidth, InnerHeight, ชื่อถ้ามันถูกปิด, ผู้ปกครองและอื่น ๆ
แล้ววัตถุเอกสารล่ะ? วัตถุเอกสารคือ html, aspx, php หรือเอกสารอื่น ๆ ที่จะโหลดลงในเบราว์เซอร์ เอกสารได้รับการโหลดจริงภายในวัตถุหน้าต่างและมีคุณสมบัติเช่นชื่อเรื่อง, URL, คุกกี้, ฯลฯ สิ่งนี้หมายความว่าอะไร? นั่นหมายความว่าถ้าคุณต้องการเข้าถึงคุณสมบัติสำหรับหน้าต่างมันคือ window.property หากเป็นเอกสารมันคือ window.document.property ซึ่งมีให้ใช้งานสั้น ๆ เช่น document.property
ดูเหมือนง่ายพอ แต่จะเกิดอะไรขึ้นเมื่อมีการแนะนำ IFRAME
สั้น ๆ โดยมีรายละเอียดเพิ่มเติมด้านล่าง
window เป็นบริบทการดำเนินการและวัตถุส่วนกลางสำหรับ JavaScript ของบริบทนั้นdocument มี DOM เริ่มต้นโดยการแยก HTMLscreen อธิบายแบบเต็มจอแสดงผลทางกายภาพดูการอ้างอิงW3CและMozillaสำหรับรายละเอียดเกี่ยวกับวัตถุเหล่านี้ ความสัมพันธ์ขั้นพื้นฐานที่สุดในบรรดาสามแท็บนั้นคือแต่ละแท็บเบราว์เซอร์มีของตัวเองwindowและwindowมีwindow.documentและwindow.screenคุณสมบัติ เบราว์เซอร์ของแท็บwindowเป็นบริบทของโลกดังนั้นdocumentและscreenอ้างถึงและwindow.document window.screenรายละเอียดเพิ่มเติมเกี่ยวกับวัตถุสามอยู่ด้านล่างต่อไปนี้ฟลานาแกน JavaScript: คู่มือการแตกหัก
windowแต่ละแท็บเบราว์เซอร์มีwindowวัตถุระดับบนสุดของตัวเอง แต่ละองค์ประกอบ<iframe>(และเลิกใช้งาน<frame>) มีwindowวัตถุของตัวเองเช่นกันซ้อนกันภายในหน้าต่างหลัก แต่ละหน้าต่างเหล่านี้จะได้รับออบเจกต์ร่วมของตัวเอง window.windowอ้างถึงเสมอwindowแต่window.parentและwindow.topอาจอ้างอิงถึงการปิดหน้าต่างให้การเข้าถึงบริบทการดำเนินการอื่น ๆ นอกเหนือจากdocumentและscreenอธิบายด้านล่างwindowคุณสมบัติรวมถึง
setTimeout()และsetInterval()ตัวจัดการเหตุการณ์ที่มีผลผูกพันกับตัวจับเวลาlocation ให้ URL ปัจจุบันhistoryด้วยวิธีการback()และforward()ให้ประวัติที่ไม่แน่นอนของแท็บnavigator อธิบายซอฟต์แวร์เบราว์เซอร์documentแต่ละwindowวัตถุมีdocumentวัตถุที่จะแสดงผล วัตถุเหล่านี้สับสนในส่วนหนึ่งเนื่องจากองค์ประกอบ HTML ถูกเพิ่มไปยังวัตถุทั่วโลกเมื่อกำหนด id ที่ไม่ซ้ำกัน เช่นในตัวอย่าง HTML
<body>
<p id="holyCow"> This is the first paragraph.</p>
</body>
องค์ประกอบย่อหน้าสามารถอ้างอิงได้จากสิ่งต่อไปนี้:
window.holyCow หรือ window["holyCow"]document.getElementById("holyCow")document.body.firstChilddocument.body.children[0]screenwindowวัตถุนอกจากนี้ยังมีscreenวัตถุที่มีคุณสมบัติที่อธิบายถึงการแสดงผลทางกายภาพ:
คุณสมบัติหน้าจอwidthและheightเป็นแบบเต็มหน้าจอ
คุณสมบัติหน้าจอavailWidthและavailHeightละเว้นแถบเครื่องมือ
ส่วนของหน้าจอที่แสดงเอกสารที่ถูกเรนเดอร์คือวิวพอร์ตใน JavaScript ซึ่งอาจเกิดความสับสนเนื่องจากเราเรียกส่วนหน้าต่างของหน้าจอแอปพลิเคชันเมื่อพูดถึงการโต้ตอบกับระบบปฏิบัติการ getBoundingClientRect()วิธีการใด ๆdocumentองค์ประกอบที่จะกลับมาพร้อมกับวัตถุtop, left, bottomและrightคุณสมบัติอธิบายสถานที่ตั้งขององค์ประกอบในวิวพอร์ต
window.onloadใช้วัตถุเอกสารหรือไม่
windowเป็นวัตถุที่ทั่วโลกที่เกิดขึ้นจริง
screenเป็นหน้าจอมันมีคุณสมบัติเกี่ยวกับการแสดงของผู้ใช้
ที่documentเป็นที่ DOM คือ
documentนอกจากนี้ยังสามารถwindow.document, screenสามารถwindow.screenและwindowสามารถwindow.window(หรือwindow.window.window) :-P
windowตัวแปรทั่วโลกซึ่งทำให้ทรัพย์สินของwindowวัตถุทั่วโลก :-)
windowมีทุกอย่างเพื่อให้คุณสามารถโทรwindow.screenและwindow.documentที่จะได้รับองค์ประกอบเหล่านั้น ตรวจสอบซอนี้ค่อนข้างพิมพ์เนื้อหาของแต่ละวัตถุ: http://jsfiddle.net/JKirchartz/82rZu/
คุณยังสามารถดูเนื้อหาของวัตถุในเครื่องมือ firebug / dev ดังนี้:
console.dir(window);
console.dir(document);
console.dir(screen);
windowเป็นรากของทุกสิ่งscreenเพียงแค่มีขนาดหน้าจอและdocumentเป็นวัตถุ DOM ด้านบน เพื่อให้คุณสามารถคิดว่ามันเป็นwindowเหมือนซุปเปอร์document...
หน้าต่างเป็นสิ่งแรกที่โหลดเข้าสู่เบราว์เซอร์ วัตถุหน้าต่างนี้มีคุณสมบัติส่วนใหญ่เช่นความยาว, InnerWidth, InnerHeight, ชื่อ, ถ้ามันถูกปิด, พาเรนต์และอื่น ๆ
วัตถุเอกสารคือ html, aspx, php หรือเอกสารอื่น ๆ ที่จะโหลดลงในเบราว์เซอร์ เอกสารได้รับการโหลดจริงภายในวัตถุหน้าต่างและมีคุณสมบัติที่สามารถใช้ได้เช่นชื่อเรื่อง, URL, คุกกี้, ฯลฯ สิ่งนี้หมายความว่าอะไร? นั่นหมายความว่าถ้าคุณต้องการเข้าถึงคุณสมบัติสำหรับหน้าต่างมันคือ window.property ถ้ามันเป็นเอกสารมันคือ window.document.property ซึ่งมีให้ใช้งานสั้น ๆ ว่า document.property