Jquery kullanmadan belge yüksekliği ve genişliği nasıl elde edilir


Yanıtlar:


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

Kontrol edin: Daha iyi bir açıklama için bu makale .


9
Bu çapraz tarayıcı değil. Bunu göndermeden önce test etmeliydin.

12
@Iwazaru Bunu işaret ettiğiniz için teşekkürler. Görünüşe göre bu 4 yıllık cevap kurşun geçirmez değil :)
Damb

2
Görünüşe göre tarayıcılar arası .
MAChitgarha

Bir web sitesinin bir sınırı varsa, bunu bu çözümle genişliğini kaldırır, ancak jQuery çözümüyle kaldırmaz. Vücutta bir sınır olması pek olası değil ama bilmeye değer. window.innerWidthbunu çözer
BritishSam

Bu, içeriğin / web sayfasının yüksekliğini değil, tarayıcı penceresinin yüksekliğini döndürür (tarayıcının yüksekliğini ayarlarsanız değişir).
Radmation

56

Http://www.howtocreate.co.uk/tutorials/javascript/browserwindow adresinde verilen son örnek bile Quirks modunda çalışmıyor. Bulması düşündüğümden daha kolay, çözüm bu gibi görünüyor (en son jquery kodundan alınmıştır):

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

Yükseklik değerini almak için Genişliği "Yükseklik" yerine değiştirin.


1
Bu doğru cevap olmalı. clientWidth her zaman doğru değere sahip değildir.
Wildhammer

clientWidth ile ilgili sorun, yalnızca görüntülenebilir olmasıdır. scrollWidth, ekrandan sızan şeyleri içerir. en azından, bu
2019'daki

@StayCool Görünüşe göre en son jQuery, belge yüksekliği / genişliği hesaplaması için hala bu yöntemi kullanıyor ve ile aynı sonucu veriyor $(document).width(). Belki de $(window).width()saf JS'de sadece document.documentElement["clientWidth"]modern tarayıcılarda olacağı gibi bir şeyin peşindesiniz.
Dan

38

Bu, tarayıcılar arası bir çözümdür:

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

Bu yapılacak güvenli ve doğru bir şey
Nan Zhou

1
bu, belgenin yüksekliğini ve genişliğini değil, pencere yüksekliğini ve genişliğini döndürüyor
Michael

25

Sen kullanmalıdır getBoundingClientRectgenellikle olarak çapraz tarayıcı çalışır ve size verir alt piksel hassasiyet sınırları dikdörtgen üzerinde.

elem.getBoundingClientRect()


document.body üzerinde kullandığım zaman bu yükseklik 0 döndürüyor
Michael

Muhtemelen vücudunuzun yüksekliği 0 olduğu içindir. Ekran türünü değiştirmezseniz, varsayılan olarak durum budur. DOM denetçisinde kontrol edin.
Erik Aigner

11

JQuery olmadan belge boyutunu alın

document.documentElement.clientWidth
document.documentElement.clientHeight

Ekran boyutuna ihtiyacınız varsa bunu kullanın

screen.width
screen.height

8

Ayrıca deneyebilirsiniz:

document.body.offsetHeight
document.body.offsetWidth

1
Bunları, pencere yeniden boyutlandırma etkinlikleri gibi şeylerde kullanırken dikkatli olun. biraz zaman alan yükseklik ve genişliği hesaplamaları gerekir.
Miles

8

Bu, tüm tarayıcılar / cihazlar için çalışmalıdır:

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

    return actualWidth;
}

window.innerWidth, geliştirici araçları Chrome'da açıkken de doğru olan tek şeydir
Alex


1

Belge genişliği ve yüksekliğini kolayca nasıl öğrenebilirim?

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

javascript'te

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

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

Gerekirse bunu her pencere yeniden boyutlandırma etkinliğinde güncelleyebilirsiniz.


0

windowtarayıcının uygulama penceresinin tamamıdır. documentgerçekte yüklenmiş olan web sayfasıdır.

window.innerWidthve window.innerHeightkaydırma çubuklarını hesaba katacak ve bunlar sizin istediğinizi olmayabilir.

document.documentElementüst kaydırma çubuğu olmayan tam web sayfasıdır. document.documentElement.clientWidthy kaydırma çubuğu olmadan belge genişlik boyutunu döndürür. document.documentElement.clientHeightx kaydırma çubuğu olmadan belge yükseklik boyutunu döndürür.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.