2012-05-13 9 views
16

Próbuję uzyskać bieżącą wysokość rzutni przeglądarki, korzystając

$(window).on('resize',function() { 
    console.log("new height is: "+$(window).height()); 
}); 

Ale jestem coraz wartości, które są zbyt niskie. Kiedy wysokość ekranu wynosi około 850 pikseli, otrzymuję wartości około 350 lub 400 pikseli od wysokości(). Co tam?

przykład: http://jsfiddle.net/forgetcolor/SVqx9/

+3

Dla wyjaśnienia - czy te coraz błędy _in jsFiddle_ lub w normalnym kontekście przeglądarki? jsFiddle używa ramki iFrame, więc okno nie będzie twoim całym oknem, tylko mniejszą ramką. – nrabinowitz

+0

w normalnej przeglądarce, a nie element iframe. – mix

+0

Będziesz potrzebować przykładu non-jsFiddle, a następnie - jsFiddle zawsze będzie podawać złe liczby tutaj. – nrabinowitz

Odpowiedz

9

Jedną z możliwych przyczyn może być to, że sprawdzają konsolę z firebug/czegoś innego. Aby nie uzyskać wysokości okna z powodu wysokości ognia.

Można spróbować czegoś takiego:

podjęcia rozpiętość/div w was dokumentu:

<span id="res"></span> 

a następnie

$(window).on('resize',function() { 
    $('#res').html("new height is: "+$(window).height()); 
}); 

Albo jeśli chcesz sprawdzić wprowadzone Firebug następnie odłącz ją od przeglądarki, a następnie sprawdź wynik.

+0

Jest to bardzo, bardzo dobra wskazówka. Miałem ten problem w Chrome z otwartym oknem programisty. –

2

Brak rep. Należy pamiętać, że wysokość okna jest zmniejszana przez elementy w przeglądarce Chrome, takie jak pasek adresu, narzędzia programistyczne, paski narzędzi zakładek i inne. Poniższe okno pokazuje dokładną reprezentację wysokości rzutni:

jsbin da ci całkiem dobrą ocenę wysokości okna, ponieważ nie ogranicza ona wyjścia twojego kodu do małego elementu iframe, tak jak inne witryny testujące js takie jak jako jsfiddle.

http://jsbin.com/otaqej/edit#javascript,html

<!DOCTYPE html> 
<html> 
    <head> 
    <script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.7.2.js"></script> 
    </head> 
    <body> 
    <div id="message">Height: 0</div> 
    <script> 
     $(window).on("resize", function(){ 
     $("#message").html("Height: " + $(window).height()); 
     }); 
    </script> 
    </body> 
</html> 
+0

Czy istnieje jakiś powód, dla którego jsbin nie działa w IE9? Jednak działało dobrze w Firefoksie. – Hoque

+0

@Hoque Remy Sharp, twórca JSBin, testował go szeroko w późniejszych wersjach IE. Jeśli masz jakiekolwiek problemy, które możesz szczegółowo opisać, poinformuj o tym na Twitterze: [@rem] (https://twitter.com/#!/rem). – Sampson

1

JSFiddle działa poprzez stworzenie który jest ładowany dynamicznie po renderowania kodu.

JavaScript oblicza wysokość okna, która wynosi , wysokość około 400 pikseli.

Twój kod robi to, co powinno być.

30

Miałem ten sam problem w Firefoksie, a następnie dodałem <!DOCTYPE HTML> na moim indeksie i zadziałało.

Źródło: http://viralpatel.net/blogs/jquery-window-height-incorrect/

+8

Po prostu uratowałeś mi dzień: D! – Kaz

+0

Jest tak również w przypadku, gdy zadeklarowałeś dokument później w dokumencie, pojawił się on po dodaniu do naszych stron tokenów metryki CSRF, a okno $. Window() zwróciło błędną wartość, która została wstawiona przed deklaracją dokumentu . –

+0

Och, człowieku ... Uratowałem też mój dzień! Wszystko było ... Tak radykalnie odmienne, kiedy popchnąłem do mojego środowiska wystawowego, naprawdę się martwiłem. –

2

Dla tych, którzy wciąż ma problem po powyższych rozwiązań ...

Proszę sprawdzić stosunek wyświetl przeglądarce na swoim project.html ..

Wartość $ (window) .height() nie jest taka sama jak "rzeczywiste" piksele obszaru roboczego po dostosowaniu współczynnika widoku! (a więc pozostałe $ (xx) .width (...) w tej sytuacji)

(Przeglądarka pamiętał moje nieostrożne 110% stosunek regulować dni temu ...)

+0

również spójrz na odpowiedź ozzysong [link] (http://stackoverflow.com/a/23320757/233545) w innym problemie –

Powiązane problemy