jQuery height () проблемы с Internet Explorer 6 - PullRequest
4 голосов
/ 29 апреля 2009

Я использую jQuery 1.3.2.

У меня проблемы с получением правильной «высоты» в Internet Explorer 6. Значения высоты верны во всех других браузерах.

Я также использую wresize плагин jQuery .

Каждый раз, когда загружается браузер, я запускаю метод, который изменяет размеры div, iframes на основе размеров браузера. (Для этого есть веская причина.)

Возвращаемое значение $ ('body'). Height () в IE 6, кажется, добавляет 10 пикселей после каждого изменения размера браузера.

Кто-нибудь еще сталкивался с чем-то подобным?

var iframeH = 0, h = 0, groupH = 0, adjust = 0;

var tableH = $("#" + gridId + "_DXHeaderTable").parent().height();
var pagerH = $(".dxgvPagerBottomPanel").height();
var groupHeight = $(".dxgvGroupPanel").height();

if (pagerH == null)
    pagerH = 0;

if (groupHeight != null)
    groupH = groupHeight + pagerH;

iframeH = $('body').height();
h = (iframeH - (tableH + pagerH + groupH));

$('#' + gridId + "Panel").css("height", (h + "px"));
$("#" + gridId + "_DXMainTable").parent().css("height", (h + "px"));

Этот код предназначен для установки высоты сетки DevExpress в ее родительском контейнере. Не обращайте внимания на тот факт, что код может быть лучше. :)

Есть ли что-то кроме "тела", которое я мог бы использовать, чтобы получить мне правильный размер? Я пробовал объект window ($ (window) .height ()), но это не очень помогает.

Любые мысли приветствуются!

Ответы [ 4 ]

5 голосов
/ 11 мая 2009

Проблема, с которой вы сталкиваетесь, скорее всего, будет разницей в CSS. Из-за плавающих проблем, отступов и различий полей рендеринга между браузерами.

попробуйте получить $ ("тело"). InnerHeight () и $ ("тело"). OuterHeight () и сравнить их в разных браузерах, вы получите некоторые общие результаты. В худшем случае вам может понадобиться запустить несколько if случаев

.
1 голос
/ 11 мая 2009

или используйте плагин Dimensions для jQuery, который дает вам гораздо больше возможностей для работы и кросс-браузер.

Я использую этот плагин для того, чтобы рисовать линии от перетаскиваемого до сбрасываемого, как я показываю это здесь

1 голос
/ 29 апреля 2009

Конечно, вот пара идей:

С IE и ESP. более старый IE, я хотел бы добавить 1-10ms setTimeout оператор вокруг моих функций рендеринга высоты - это дает dom и IE возможность "расслабиться"

Кроме того, убедитесь, что ваши материалы видны на странице - для этого вам может потребоваться временно сбросить объекты с экрана, используя абсолютное положение, а затем снова открыть их на экране.

Другое дело, что высота () иногда бывает шаткой. Попробуйте .css ('height'), чтобы получить высоту [это также быстрее] и удалите 'px' для того, что иногда более точное измерение.

0 голосов
/ 09 ноября 2011
$('body').height(); // call this first

iframeH = $('body').height(); //then try this
...