Подтвердить что ты не робот

Получить высоту окна

Это расстраивает меня. Это должно быть что-то очень простое, но я не могу заставить его работать в IE. Я хочу получить высоту текущего окна: не высота прокрутки, не высота документа, а фактическая высота окна. Я пробовал window.innerHeight, который возвращает undefined и document.documentElement.clientHeight, который дает высоту прокрутки.

4b9b3361

Ответ 1

Для IE 8 и ниже используйте

document.documentElement.offsetHeight;

Итак, кросс-браузер должен быть:

var height = "innerHeight" in window 
               ? window.innerHeight
               : document.documentElement.offsetHeight; 

Ответ 2

Я использую:

doc = document;
var theHeight = Math.max(
    doc.body.scrollHeight, doc.documentElement.scrollHeight,
    doc.body.offsetHeight, doc.documentElement.offsetHeight,
    doc.body.clientHeight, doc.documentElement.clientHeight
);

Нашел его здесь: Получить высоту документа (кросс-браузер) - Джеймс Падольси

И также обнаружил, что jQuery делает то же самое:

// Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height], whichever is greatest
// unfortunately, this causes bug #3838 in IE6/8 only, but there is currently no good, small way to fix it.
return Math.max(
  elem.body[ "scroll" + name ], doc[ "scroll" + name ],
  elem.body[ "offset" + name ], doc[ "offset" + name ],
  doc[ "client" + name ]
);

Ответ 3

http://www.javascripter.net/faq/browserw.htm

Обратите внимание, что код, который использует document.body.offsetWidth и document.body.offsetHeight, должен быть выполнен после того, как браузер проанализировал тег.

Обновление: Попробуйте это

<script type="text/javascript">
<!--

 var viewportwidth;
 var viewportheight;

 // the more standards compliant browsers (mozilla/netscape/opera/IE7) use window.innerWidth and window.innerHeight

 if (typeof window.innerWidth != 'undefined')
 {
      viewportwidth = window.innerWidth,
      viewportheight = window.innerHeight
 }

// IE6 in standards compliant mode (i.e. with a valid doctype as the first line in the document)

 else if (typeof document.documentElement != 'undefined'
     && typeof document.documentElement.clientWidth !=
     'undefined' && document.documentElement.clientWidth != 0)
 {
       viewportwidth = document.documentElement.clientWidth,
       viewportheight = document.documentElement.clientHeight
 }

 // older versions of IE

 else
 {
       viewportwidth = document.getElementsByTagName('body')[0].clientWidth,
       viewportheight = document.getElementsByTagName('body')[0].clientHeight
 }
document.write('<p>Your viewport width is '+viewportwidth+'x'+viewportheight+'</p>');
//-->
</script>

Найдено здесь