jquery $ (window) .height () กำลังส่งคืนความสูงของเอกสาร


104

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

ฉันเรียน MBA ขนาด 13 นิ้วและความสูงของหน้าต่างเบราว์เซอร์ของฉันเมื่อขยายใหญ่สุดระหว่าง 780px - 820px (โดยประมาณ) แต่ทุกครั้งที่ส่งกลับค่าความสูงของหน้าต่างเท่ากับความสูงของเอกสารในทุกกรณีบนไซต์ที่ฉันกำลังดำเนินการอยู่คือ มากกว่า 1,000px

เกิดขึ้นที่นี่คืออะไร?

alert($(window).height());
alert($(document).height()); 

คุณกำลังทำงานกับเบราว์เซอร์อะไร
Kanishka Panamaldeniya

ปัญหานี้เริ่มปรากฏขึ้นพร้อมกับ jquery-1.8.0 jquery เวอร์ชันเก่าทำสิ่งนี้ได้อย่างถูกต้อง (แม้ว่าจะไม่มีชุด DOCTYPE
ก็ตาม

คำตอบ:


246

หากไม่มีdoctypeแท็ก Chrome จะรายงานค่าเดียวกันสำหรับทั้งสองการโทร

การเพิ่มประเภทหลักที่เข้มงวดเช่น<!DOCTYPE html>ทำให้ค่าต่างๆทำงานตามที่โฆษณาไว้

doctypeแท็กจะต้องมีมากสิ่งแรกในเอกสารของคุณ เช่นคุณไม่สามารถมีข้อความอยู่ข้างหน้าได้แม้ว่าจะไม่ได้แสดงผลอะไรก็ตาม


11
FireFox จะรายงานนี้ด้วยเว้นแต่คุณจะใช้ประเภทหลักที่เข้มงวดเช่น <! DOCTYPE HTML>
Tom Chiverton

นอกจากนี้ประเภทที่ไม่ถูกต้องทำให้ twitter bootstrap scrollspy ทำงานแปลก ๆ ด้วยเหตุผลเดียวกับที่ $ (window) .height () ส่งกลับความสูงของเอกสาร
nidheeshdas

3
ในกรณีของฉันฉันมีResponse.Writeโค้ดอยู่ข้างหลังบนไซต์ ASP ซึ่งส่งออก a 1ก่อน HTML ใด ๆ ดังนั้นประเภทเอกสารของฉันจึงถูกต้อง แต่ในทางเทคนิคแล้วไม่ใช่สิ่งแรกในหน้า
เจมส์

1
ฉันมีปัญหาเดียวกัน แต่มีการประกาศประเภทหลักอย่างถูกต้อง :(
bia.migueis

1
" แท็กประเภทหลักต้องเป็นสิ่งแรกในเอกสารของคุณเช่นคุณไม่สามารถมีโค้ด php ก่อนหน้านั้นได้แม้ว่าจะไม่แสดงผลอะไรก็ตาม " สิ่งนี้จะเป็นไปได้อย่างไร? เบราว์เซอร์ไม่ทราบว่าเซิร์ฟเวอร์กำลังทำงานอะไรอยู่รับเฉพาะไฟล์ข้อความที่มีมาร์กอัป HTML จะเกิดอะไรขึ้นถ้าคุณใช้ IIS ไม่ใช่ Apache เบราว์เซอร์ไม่สนใจว่าเซิร์ฟเวอร์กำลังทำอะไรอยู่
Sablefoste

25

ฉันมีปัญหาเดียวกันและใช้สิ่งนี้แก้ไขได้

var w = window.innerWidth;
var h = window.innerHeight;

1
แปลกมากฉันใช้หลักประเภทที่ถูกต้องเช่นกัน ความสูงภายในของคุณแก้ไขปัญหาของฉัน! ขอบคุณ
Martijn van Hoof

1
ปัญหาเดียวกัน - มีประเภทหลักที่ถูกต้องและทั้งหมด ข้ามแพลตฟอร์มมากขึ้นเล็กน้อย: var w = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth; var h = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;
จอห์นสัน

แก้ไขปัญหาได้จริงๆ (และใช่ฉันมีประเภทหลัก - สิ่งแรกในแต่ละหน้า)
hillcode

1

ฉันคิดว่าเอกสารของคุณต้องมีพื้นที่เพียงพอในหน้าต่างเพื่อแสดงเนื้อหา ซึ่งหมายความว่าไม่จำเป็นต้องเลื่อนลงเพื่อดูส่วนใด ๆ ของเอกสารอีกต่อไป ในกรณีนี้ความสูงของเอกสารจะเท่ากับความสูงของหน้าต่าง


เอกสารจะขยายด้านล่างสุดของหน้าต่างในทุกหน้า
Fraser

0

นี่คือคำถามและคำตอบสำหรับสิ่งนี้: ความแตกต่างระหว่าง screen.availHeight และ window.height ()

มีรูปภาพด้วยดังนั้นคุณจึงสามารถเห็นความแตกต่างได้ หวังว่านี่จะช่วยได้

โดยทั่วไป$(window).height()ให้ความสูงสูงสุดภายในหน้าต่างเบราว์เซอร์ (วิวพอร์ต) และ$(document).height()ระบุความสูงของเอกสารภายในเบราว์เซอร์ ส่วนใหญ่แล้วจะเหมือนกันทุกประการแม้จะมีแถบเลื่อนก็ตาม


0

มันใช้งานได้จริงถ้าเราใช้ Doctype บนหน้าเว็บ jquery ของเรา (หน้าต่าง) จะคืนค่าความสูงของวิวพอร์ตมิฉะนั้นจะส่งคืนความสูงของเอกสารทั้งหมด

กำหนดแท็กต่อไปนี้ที่ด้านบนของหน้าเว็บของคุณ: <!DOCTYPE html>


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