Я пытаюсь определить текущий размер браузера (ширину и высоту). Я знаю, что в jQuery с $(document).width and $(document).height
это очень просто, но я не хочу добавлять в проект размер библиотеки jQuery, поэтому я бы предпочел просто использовать встроенный JavaScript. Каков был бы короткий и эффективный способ сделать то же самое с JavaScript?
Размер браузера (ширина и высота)
Ответы (5)
function getWindowSize(){
var d= document, root= d.documentElement, body= d.body;
var wid= window.innerWidth || root.clientWidth || body.clientWidth,
hi= window.innerHeight || root.clientHeight || body.clientHeight ;
return [wid,hi]
}
Браузеры IE - единственные, кто не использует innerHeight и Width.
Но не существует «стандартных» - только браузерные реализации.
Проверьте html (document.documentElement) clientHeight перед проверкой тела - если он не равен 0, это высота «области просмотра», а body.clientHeight - это высота тела, которая может быть больше или меньше окна .
Обратный режим возвращает 0 для корневого элемента и высоту окна (области просмотра) от тела.
То же самое с шириной.
Попробуй это;
<script type="text/javascript">
winwidth=document.all?document.body.clientWidth:window.innerWidth;
winHeight=document.all?document.body.clientHeight:window.innerHeight;
alert(winwidth+","+winHeight);
</script>
document.all
, вместо этого убедитесь, что clientWidth не определено.
- person Joel; 19.03.2010
document.all
, не означает, что он реализует или не реализует document.body.clientHeight
. Вы должны проверить желаемое свойство, а не несвязанное имущество.
- person Joel; 19.03.2010
Вот пример кода
function getSize(){
var w=window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;
var h=window.innerHeight || document.documentElement.clientHeight ||document.body.clientHeight;
}
Мой случай использования window.innerWidth
включал создание настраиваемого модального всплывающего окна. Проще говоря, пользователь нажимает кнопку, всплывающее окно открывается по центру браузера, а за всплывающим окном находится прозрачный черный bkgd. Моя проблема заключалась в том, чтобы найти ширину и высоту браузера для создания прозрачного bkgd.
window.innerWidth
отлично подходит для определения ширины, но помните, что window.innerWidth and window.innerHeight
не компенсирует полосы прокрутки, поэтому, если ваш контент выходит за пределы видимой области содержимого. Мне пришлось вычесть из значения 17 пикселей.
transBkgd.style.width = (window.innerWidth - 17) + "px";
Поскольку содержание сайта всегда выходило за пределы видимой высоты, я не мог использовать window.innerHeight
. Если бы пользователь прокручивал вниз, прозрачный bkgd заканчивался на этом месте, и это выглядело неприятно. Чтобы сохранить прозрачность bkgd до самого низа содержимого, я использовал document.body.clientHeight
.
transBkgd.style.height = document.body.clientHeight + "px";
Я протестировал всплывающее окно в IE, FF, Chrome, и во всех отношениях оно выглядит хорошо. Я знаю, что это не слишком соответствует исходному вопросу, но я полагаю, что это может помочь, если кто-то еще столкнется с той же проблемой при создании настраиваемого модального всплывающего окна.
width: window.innerWidth || document.body.clientWidth
- person Peter Di Cecco; 23.03.2010