Оновлення за 2017 рік
Моя оригінальна відповідь була написана в 2009 році. Хоча вона все ще працює, я хотів би оновити її на 2017 рік. Веб-браузери все ще можуть вести себе по-різному. Я довіряю команді jQuery зробити велику роботу з підтримання узгодженості між браузером. Однак включати всю бібліотеку не обов’язково. У джерелі jQuery відповідна частина знаходиться у рядку 37 розмірів.js . Тут він видобутий і модифікований для роботи окремо:
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() );
Оригінальний відповідь
Оскільки всі веб-переглядачі ведуть себе по-різному, вам потрібно спочатку перевірити значення, а потім скористатися правильним. Ось функція, яка робить це для вас:
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;
}
}
і аналогічно по висоті:
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;
}
}
Зателефонуйте в обох сценаріях за допомогою getWidth()
або getHeight()
. Якщо жодна з власних властивостей браузера не визначена, вона повернеться undefined
.