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

Получение высоты и ширины тела или окна веб-страницы

В зависимости от того, в каком режиме IE8 находится (quirks или standard), я получаю разные значения для высоты и ширины. Я пробовал стандартный javascript и jquery, но оба возвращали разные результаты.

В Quirks

$('body').width = 1239  
$('body').height = 184  
document.body.clientWidth = 1231  
document.body.clientHeight = 176  

В стандартах

$('body').width = 1260  
$('body').height = 182  
document.body.clientWidth = 1254  
document.body.clientHeight = 176

Любые идеи о том, как получить значение без изменений в режиме IE8.

Спасибо в adv.

4b9b3361

Ответ 1

Возможно, проблема связана с тем, что полосы прокрутки включены в ширину и высоту независимо от того, существуют они или нет. У меня нет IE (на Mac), поэтому не могу проверить.

Однако я могу рассказать вам, что работает в моем проекте jQuery Lightbox У меня нет такой проблемы. Мы используем в нем следующий код:

// Make the overlay the size of the body
var $body = $(this.ie6 ? document.body : document); // using document in ie6 causes a crash
$('#lightbox-overlay').css({
 width:  $body.width(),
 height:  $body.height()
});

// ... some code ...

// Get the window dimensions
var $window = $(window);
var wWidth  = $window.width();
var wHeight = $window.height();

И наложение отображается правильно. Я бы верю в результат jQuery ширины и высоты по сравнению с результатом native, поскольку jQuery, естественно, должен учитывать любые причуды с браузером.

Важно отметить, что заголовок script выше, по какой-то причине, предпочитает $(document) над $(document.body) - я не могу вспомнить извинения: O - возможно, это также решает проблему?

Ответ 2

Просто быстрый снимок. Попробуйте дать свое тело #page:

function getPageHeight() {
    var pageHeight = document.getElementById('page').offsetHeight;
    var pageWidth = document.getElementById('page').offsetWidth;

    alert(pageHeight);
    alert(pageWidth);
}

Ответ 3

Попробуйте следующее:

var viewport = {
    width : $(window).width(),
    height : $(window).height()
};

var width = viewport.width;
var height = viewport.height;