วิธีรับความสูงและความกว้างของเอกสารโดยไม่ใช้ jquery


112

วิธีรับความสูงและความกว้างของเอกสารอย่างแท้จริง เช่นโดยไม่ต้องใช้ .
ฉันรู้เกี่ยวกับ$(document).height()และ$(document).width()แต่ฉันต้องการทำสิ่งนี้ใน.

ฉันหมายถึงความสูงและความกว้างของหน้า


คำตอบ:


119
var height = document.body.clientHeight;
var width = document.body.clientWidth;

ตรวจสอบ: บทความนี้เพื่อคำอธิบายที่ดีขึ้น


9
นี่ไม่ใช่ข้ามเบราว์เซอร์ คุณควรทดสอบสิ่งนี้ก่อนโพสต์

12
@Iwazaru ขอบคุณที่ชี้ให้เห็น ดูเหมือนคำตอบ 4 ปีนี้จะไม่สามารถกันกระสุนได้ :)
Damb

2
ดูเหมือนว่ามันเป็นเบราว์เซอร์
MAChitgarha

หากเว็บไซต์มีเส้นขอบจะใช้ความกว้างนั้นออกด้วยโซลูชันนี้ แต่ไม่ใช่โซลูชัน jQuery ไม่น่าจะเป็นเส้นขอบบนร่างกาย แต่คุ้มค่าที่จะรู้ window.innerWidthแก้ปัญหานี้
BritishSam

สิ่งนี้จะคืนค่าความสูงของหน้าต่างเบราว์เซอร์ (หากคุณปรับความสูงของเบราว์เซอร์จะเปลี่ยนไป) ไม่ใช่ความสูงของเนื้อหา / หน้าเว็บ
Radmation

56

แม้แต่ตัวอย่างสุดท้ายที่ให้ไว้ในhttp://www.howtocreate.co.uk/tutorials/javascript/browserwindowก็ไม่ทำงานในโหมด Quirks หาง่ายกว่าที่คิดดูเหมือนจะเป็นวิธีแก้ปัญหา (แยกจากรหัส jquery ล่าสุด):

Math.max(
    document.documentElement["clientWidth"],
    document.body["scrollWidth"],
    document.documentElement["scrollWidth"],
    document.body["offsetWidth"],
    document.documentElement["offsetWidth"]
);

เพียงแค่แทนที่ Width สำหรับ "Height" เพื่อรับ Height


1
นี่น่าจะเป็นคำตอบที่ถูกต้อง clientWidth ไม่มีค่าที่ถูกต้องเสมอไป
Wildhammer

ปัญหาเกี่ยวกับ clientWidth คือสามารถดูได้เท่านั้น scrollWidth รวมถึงสิ่งที่รั่วไหลออกจากหน้าจอ อย่างน้อยนี่ก็เป็นเรื่องจริงสำหรับการทดลอง Chrome ของฉันในปี 2019
StayCool

@StayCool ดูเหมือนว่า jQuery ล่าสุดยังคงใช้วิธีนี้สำหรับการคำนวณความสูง / ความกว้างของเอกสารและให้ผลลัพธ์เช่นเดียวกับ$(document).width(). บางทีคุณอาจจะเป็นเช่น$(window).width()นั้นใน JS บริสุทธิ์จะเป็นเพียงdocument.documentElement["clientWidth"]บนเบราว์เซอร์สมัยใหม่
แดน

38

นี่คือโซลูชันข้ามเบราว์เซอร์:

var w = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;
var h = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;

นี่เป็นสิ่งที่ปลอดภัยและถูกต้องที่ต้องทำ
Nan Zhou

1
นี่เป็นการคืนค่าความสูงและความกว้างของหน้าต่างไม่ใช่ความสูงและความกว้างของเอกสาร
Michael

25

คุณควรใช้getBoundingClientRectตามปกติงานข้ามเบราว์เซอร์และให้ความแม่นยำของพิกเซลย่อยบนกรอบสี่เหลี่ยม

elem.getBoundingClientRect()

1
สำหรับผู้ที่สงสัยเกี่ยวกับการสนับสนุน: caniuse.com/#feat=getboundingclientrect
Mike Gleason jr Couturier

สิ่งนี้จะคืนค่าความสูงเป็น 0 เมื่อฉันใช้บน document.body
Michael

อาจเป็นเพราะร่างกายของคุณมีความสูงเป็น 0 หากคุณไม่เปลี่ยนประเภทการแสดงผลจะเป็นเช่นนั้นโดยค่าเริ่มต้น ตรวจสอบในตัวตรวจสอบ DOM
Erik Aigner

11

รับขนาดเอกสารโดยไม่ต้องใช้ jQuery

document.documentElement.clientWidth
document.documentElement.clientHeight

และใช้สิ่งนี้หากคุณต้องการขนาดหน้าจอ

screen.width
screen.height

8

คุณสามารถลอง:

document.body.offsetHeight
document.body.offsetWidth

1
ระวังการใช้สิ่งเหล่านี้ในกิจกรรมต่างๆเช่นการปรับขนาดหน้าต่าง พวกเขาต้องคำนวณความสูงและความกว้างซึ่งใช้เวลาสักครู่
ไมล์

8

สิ่งนี้ควรใช้ได้กับเบราว์เซอร์ / อุปกรณ์ทั้งหมด:

function getActualWidth()
{
    var actualWidth = window.innerWidth ||
                      document.documentElement.clientWidth ||
                      document.body.clientWidth ||
                      document.body.offsetWidth;

    return actualWidth;
}

window.innerWidth เป็นเครื่องมือเดียวที่ถูกต้องเมื่อเปิดเครื่องมือ dev บน Chrome
Alex


1

จะค้นหาความกว้างและความสูงของเอกสารได้อย่างไร?

ใน HTML
<span id="hidden_placer" style="position:absolute;right:0;bottom:0;visibility:hidden;"></span>

ในจาวาสคริปต์

     var c=document.querySelector('#hidden_placer');

     var r=c.getBoundingClientRect();
     r.right=document width
     r.bottom=document height`

คุณสามารถอัปเดตสิ่งนี้ในทุกเหตุการณ์การปรับขนาดหน้าต่างหากจำเป็น


0

windowคือหน้าต่างแอปพลิเคชันของเบราว์เซอร์ทั้งหมด documentคือหน้าเว็บที่แสดงว่าโหลดจริง

window.innerWidthและwindow.innerHeightจะคำนึงถึงแถบเลื่อนซึ่งอาจไม่ใช่สิ่งที่คุณต้องการ

document.documentElementคือหน้าเว็บแบบเต็มโดยไม่มีแถบเลื่อนด้านบน document.documentElement.clientWidthส่งคืนขนาดความกว้างของเอกสารโดยไม่มีแถบเลื่อน y document.documentElement.clientHeightส่งคืนขนาดความสูงของเอกสารโดยไม่มีแถบเลื่อน x

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.