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

Найдите точную высоту и ширину окна просмотра в браузере (без Prototype/jQuery)

Я пытаюсь найти точную высоту и ширину окна просмотра браузера, но я подозреваю, что либо Mozilla, либо IE дают мне неправильный номер. Здесь мой метод для высоты:

var viewportHeight = window.innerHeight || 
                     document.documentElement.clientHeight || 
                     document.body.clientHeight;

Я еще не начал ширину, но я предполагаю, что это будет нечто похожее.

Есть ли более правильный способ получить эту информацию? В идеале я бы хотел, чтобы решение работало с Safari/Chrome/другими браузерами.

4b9b3361

Ответ 1

Вы можете попробовать следующее:

function getViewport() {

 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
 }
 return [viewPortWidth, viewPortHeight];
}

(http://andylangton.co.uk/articles/javascript/get-viewport-size-javascript/)

Тем не менее, даже получить информацию о просмотре во всех браузерах (например, IE6 в режиме quirks) не представляется возможным. Но выше script должен хорошо работать: -)

Ответ 2

Вы можете использовать более короткую версию:

<script type="text/javascript">
<!--
function getViewportSize(){
    var e = window;
    var a = 'inner';
    if (!('innerWidth' in window)){
        a = 'client';
        e = document.documentElement || document.body;
    }
    return { width : e[ a+'Width' ] , height : e[ a+'Height' ] }
}
//-->
</script>

Ответ 3

Я всегда использовал document.documentElement.clientHeight/clientWidth. Я не думаю, что вам нужны условия OR в этом случае.

Ответ 4

Попробуйте это.

<script type="text/javascript">
function ViewPort()
{
var w = Math.max(document.documentElement.clientWidth, window.innerWidth || 0)
var h = Math.max(document.documentElement.clientHeight, window.innerHeight || 0)
var viewsize = w + "," + h;
alert("Your View Port Size is:" + viewsize);
}
</script>