Pembaruan untuk 2017
Jawaban asli saya ditulis pada tahun 2009. Ketika masih berfungsi, saya ingin memperbaruinya untuk tahun 2017. Browser masih dapat berperilaku berbeda. Saya percaya tim jQuery untuk melakukan pekerjaan dengan baik dalam menjaga konsistensi lintas-browser. Namun, tidak perlu menyertakan seluruh perpustakaan. Di sumber jQuery, bagian yang relevan ditemukan pada baris 37 dari dimensional.js . Di sini diekstraksi dan dimodifikasi untuk bekerja mandiri:
function getWidth() {
return Math.max(
document.body.scrollWidth,
document.documentElement.scrollWidth,
document.body.offsetWidth,
document.documentElement.offsetWidth,
document.documentElement.clientWidth
);
}
function getHeight() {
return Math.max(
document.body.scrollHeight,
document.documentElement.scrollHeight,
document.body.offsetHeight,
document.documentElement.offsetHeight,
document.documentElement.clientHeight
);
}
console.log('Width: ' + getWidth() );
console.log('Height: ' + getHeight() );
Jawaban Asli
Karena semua browser berperilaku berbeda, Anda harus menguji nilai terlebih dahulu, dan kemudian menggunakan yang benar. Inilah fungsi yang melakukan ini untuk Anda:
function getWidth() {
if (self.innerWidth) {
return self.innerWidth;
}
if (document.documentElement && document.documentElement.clientWidth) {
return document.documentElement.clientWidth;
}
if (document.body) {
return document.body.clientWidth;
}
}
dan juga untuk ketinggian:
function getHeight() {
if (self.innerHeight) {
return self.innerHeight;
}
if (document.documentElement && document.documentElement.clientHeight) {
return document.documentElement.clientHeight;
}
if (document.body) {
return document.body.clientHeight;
}
}
Panggil kedua hal ini dalam skrip Anda menggunakan getWidth()
atau getHeight()
. Jika tidak ada properti asli browser yang ditentukan, itu akan kembali undefined
.