2013-04-05 15 views

Odpowiedz

2

Jest to możliwe dzięki odsłuchaniu wydarzenia resize.

$(window).resize(function() { 
    var width = $(window).width(); 
    var height = $(window).height(); 
}) 
1

Użyj metody zmiany rozmiaru jQuery, aby posłuchać zmiany rozmiaru okna. wewnątrz callbacka możesz uzyskać wysokość i szerokość.

$(window).resize(function(){ 
    var width = $(window).width(); 
    var height = $(window).height(); 

}); 
+0

Próbowałem tego, ale nadal otrzymuję oryginalne wymiary – Gregwest85

+0

czy możesz udostępnić swój kod? – Anoop

1

Można użyć zdarzenia resize wraz z height() i width() właściwości

$(window).resize(function(){ 
    var height = $(window).height(); 
    var width = $(window).width(); 
}); 

See some more examples here

4

można użyć JQuery rozmiaru funkcji(). Upewnij się, że dodajesz tę samą logikę zmiany rozmiaru, aby ponownie załadować zdarzenie. Jeśli użytkownik załaduje się ponownie w oknie o rozmiarach, twoja logika nie zadziała.

$(window).resize(function() { 
         $windowWidth = $(window).width(); 
          $windowHeight = $(window).height(); 
         }); 

$(document).ready(function() { 
     //same logic that you use in the resize... 
    }); 
+0

Jay. dzięki. Czy można uniknąć duplikowania kodu? Używam mega-menu dla mojej witryny i potrzebuję automatycznej zmiany rozmiaru okna na zmiany rozmiaru okna i po ponownym wczytaniu. W tej chwili używam tego samego kodu w zdarzeniach 'resize()' i 'ready()'. – Andry

+0

@Andry Czy możesz udostępnić kod? –

13

Czysta JavaScript odpowiedź:

var onresize = function() { 
    //your code here 
    //this is just an example 
    width = document.body.clientWidth; 
    height = document.body.clientHeight; 
} 
window.addEventListener("resize", onresize); 

Działa to dobrze na chrom. Jednak działa tylko na chrome. Nieco więcej przykładów w różnych przeglądarkach używa właściwości celu zdarzenia "outerWidth" i "outerHeight", ponieważ w tym przypadku zdarzeniem "target" jest samo okno. Kod będzie jak tego

var onresize = function(e) { 
    //note i need to pass the event as an argument to the function 
    width = e.target.outerWidth; 
    height = e.target.outerHeight; 
} 
window.addEventListener("resize", onresize); 

to działa prawidłowo w Firefox i Chrome

Nadzieja to pomaga :)

Edit: Testowany w IE9 i to działało zbyt :)

+0

Edycja: document.width i document.height nie powinny już być używane i nie działały dla mnie w Chrome. Zamiast tego zaleca się używanie document.body.clientWidth i document.body.clientHeight. Zobacz http://www.howtocreate.co.uk/tutorials/javascript/browserwindow –

3

Praktycznie Używam tego i bardzo mi to pomaga:

var TO = false; 
    var resizeEvent = 'onorientationchange' in window ? 'orientationchange' : 'resize'; 
    $(window).bind(resizeEvent, function() { 
     TO && clearTimeout(TO); 
     TO = setTimeout(resizeBody, 200); 
    }); 
    function resizeBody(){ 
     var height = window.innerHeight || $(window).height(); 
     var width = window.innerWidth || $(window).width(); 
     alert(height); 
     alert(width); 
    } 
0

Jeśli potrzebujesz poznać te wartości, aby zrobić layou t korekty, założę się, że planujesz słuchać tych wartości. Zamiast tego zaleciłem użycie interfejsu API Window.matchmedia().

Jest to much more performant i jest w zasadzie odpowiednikiem JS zapytań o media CSS.

Bardzo szybkie przykład użycia:

if (window.matchMedia("(max-width: 500px)").matches) { 
    /* the viewport is less than or exactly 500 pixels wide */ 
} else { 
    /* the viewport is more than 500 pixels wide */ 
} 

Można również skonfigurować słuchacz że dostanę wywoływana za każdym razem, gdy stan matches zmian własności.

Zobacz MDN dla description i example of using a listener.

Powiązane problemy