jquery $ (window) .height () zwraca wysokość dokumentu


104

Jestem pewien, że popełniam prosty błąd, ale po prostu ostrzegam $(window).height()i zwraca tę samą wartość, co $(document).height().

Mam 13-calowy MBA i wysokość okna moich przeglądarek po zmaksymalizowaniu między 780 - 820 pikseli (w przybliżeniu), ale za każdym razem zwraca wysokość okna identyczną z wysokością dokumentu. W każdym przypadku w witrynie, nad którą pracuję, jest ponad 1000px.

Co tu się dzieje?

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

nad jaką przeglądarką pracujesz?
Kanishka Panamaldeniya

Ten problem zaczął się pojawiać z jquery-1.8.0, starsze wersje jquery robiły to poprawnie (nawet bez zestawu DOCTYPE)
ralhei

Odpowiedzi:


245

Bez doctypetagu Chrome zgłasza tę samą wartość dla obu wywołań.

Dodanie ścisłego typu dokumentu, na przykład, <!DOCTYPE html>powoduje, że wartości będą działać zgodnie z zapowiedzią.

doctypeTag musi być bardzo pierwszą rzeczą w dokumencie. Np. Nie możesz mieć przed sobą żadnego tekstu, nawet jeśli nic nie renderuje.


11
FireFox również wykonuje to raportowanie, chyba że używasz ścisłego typu dokumentu, takiego jak <! DOCTYPE HTML>
Tom Chiverton

również, niepoprawny doctype powoduje, że twitter bootstrap scrollspy zachowuje się dziwnie z tego samego powodu, dla którego $ (window) .height () zwraca wysokość dokumentu.
nidheeshdas

3
W moim przypadku miałem Response.Writew kodzie za stroną ASP, która wyświetlała 1przed jakimkolwiek kodem HTML. Więc mój typ dokumentu był właściwy, ale technicznie rzecz biorąc, nie był pierwszą rzeczą na stronie.
James

1
Mam ten sam problem, ale doctype jest poprawnie zadeklarowany :(
bia.migueis

1
Znacznik doctype musi być pierwszą rzeczą w dokumencie. Np. Nie możesz mieć przed sobą żadnego kodu php, nawet jeśli nic nie renderuje. ” Jak to możliwe? Przeglądarka nie wie, co działa serwer, otrzymuje tylko plik tekstowy ze znacznikami HTML. Co zrobić, jeśli używasz usług IIS, a nie Apache? Przeglądarka nie dba o to, co robi serwer.
Sablefoste

24

Miałem ten sam problem i dzięki temu rozwiązałem go.

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

1
tak dziwne, używam również odpowiedniego doctype. Twoja wewnętrzna wysokość rozwiązała mój problem! Dzięki
Martijn van Hoof

1
Ten sam problem - miał prawidłowy doctype i wszystko. Nieco bardziej wieloplatformowy: var w = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth; var h = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;
melanie johnson

naprawdę naprawiam problem (i tak, mam typ dokumentu - pierwsza rzecz na każdej stronie)
kod górny Kwietnia

1

Myślę, że twój dokument musi mieć wystarczająco dużo miejsca w oknie, aby wyświetlić jego zawartość. Oznacza to, że nie ma potrzeby przewijania w dół, aby zobaczyć więcej części dokumentu. W takim przypadku wysokość dokumentu byłaby równa wysokości okna.


Dokument rozciąga się poniżej dolnej części okna na każdej stronie.
Fraser

0

Oto pytanie i odpowiedź na to: Różnica między screen.availHeight i window.height ()

Ma też zdjęcia, więc możesz zobaczyć różnice. Mam nadzieję że to pomoże.

Zasadniczo $(window).height()podaje maksymalną wysokość wewnątrz okna przeglądarki (rzutni) i $(document).height()podaje wysokość dokumentu w przeglądarce. W większości przypadków będą dokładnie takie same, nawet z paskami przewijania.


0

To naprawdę działa, jeśli użyjemy Doctype na naszej stronie internetowej. Jquery (okno) zwróci wysokość widoku, w przeciwnym razie zwróci pełną wysokość dokumentu.

Zdefiniuj następujący tag u góry swojej strony internetowej: <!DOCTYPE html>


użyj tego tagu u góry swojej strony internetowej: <! DOCTYPE html>
Gourav Yadav
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.