JavaScript - Получение Высоты Окна Браузера
Я ищу фрагмент кода, который позволяет получить высоту видимой области в окне браузера.
У меня есть следующий код, однако он немного неисправен: если тело документа не превышает высоту окна, то результат оказывается меньше ожидаемого.
document.body.clientHeight;
Я пробовал несколько других решений, но они либо возвращают NaN, либо ту же высоту, что и вышеупомянутое выражение.
Кто-нибудь знает, как получить реальную высоту окна браузера?
5 ответ(ов)
Для получения размеров окна браузера вы можете использовать следующий код, основанный на примере с сайта http://www.howtocreate.co.uk/tutorials/javascript/browserwindow:
function alertSize() {
var myWidth = 0, myHeight = 0;
if (typeof(window.innerWidth) == 'number') {
// Не IE
myWidth = window.innerWidth;
myHeight = window.innerHeight;
} else if (document.documentElement && (document.documentElement.clientWidth || document.documentElement.clientHeight)) {
// IE 6+ в режиме 'соответствия стандартам'
myWidth = document.documentElement.clientWidth;
myHeight = document.documentElement.clientHeight;
} else if (document.body && (document.body.clientWidth || document.body.clientHeight)) {
// Совместимость с IE 4
myWidth = document.body.clientWidth;
myHeight = document.body.clientHeight;
}
window.alert('Ширина = ' + myWidth);
window.alert('Высота = ' + myHeight);
}
Таким образом, для современных браузеров вы используете innerHeight
, для IE - documentElement.clientHeight
, а для устаревших/квирк-сценариев - body.clientHeight
.
Попробуйте использовать jQuery для получения высоты окна:
window_size = $(window).height();
Этот код возвращает текущую высоту окна браузера. Не забудьте подключить библиотеку jQuery перед использованием данного кода, если она еще не подключена.
Вы можете использовать window.innerHeight
, чтобы получить высоту области просмотра (viewport) в текущем окне браузера. Это значение измеряется в пикселях и обновляется автоматически при изменении размера окна. Например, чтобы получить высоту, вы можете использовать следующий код:
const viewportHeight = window.innerHeight;
console.log(`Высота области просмотра: ${viewportHeight}px`);
Этот код выведет текущую высоту области просмотра в консоль. Если вам необходимо учитывать высоту при изменении размеров окна, вы можете размещать этот код в обработчике события resize
.
Я предпочитаю делать это следующим образом, используя тернарный оператор для присваивания значений:
var width = isNaN(window.innerWidth) ? window.clientWidth : window.innerWidth;
var height = isNaN(window.innerHeight) ? window.clientHeight : window.innerHeight;
Стоит отметить, что если вы выполните этот код в глобальном контексте, то с этого момента сможете использовать window.height
и window.width
.
По моему опыту, это работает в IE и других браузерах (тестировал только в IE11).
Решение очень компактное и, если я не ошибаюсь, эффективное.
Есть более простой способ, чем использовать множество условий if
. Используйте оператор или
(||
).
function getBrowserDimensions() {
return {
width: (window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth),
height: (window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight)
};
}
var browser_dims = getBrowserDimensions();
alert("Ширина = " + browser_dims.width + "\nВысота = " + browser_dims.height);
Этот код возвращает размеры окна браузера, проверяя несколько свойств для получения актуальных значений ширины и высоты. Это делает код более компактным и читаемым.
Как определить, что окно браузера в данный момент не активно?
Автоматическая настройка высоты iframe в зависимости от содержимого без использования полосы прокрутки?
В чем разница между self и window?
Где найти документацию по форматированию даты в JavaScript?
Ссылка и выполнение внешнего JavaScript-файла, размещенного на GitHub