Вопрос

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

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

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

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

Возвращаемое значение $('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).height()), но это, похоже, не сильно помогло.

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

Это было полезно?

Решение

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

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

Другие советы

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

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

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

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

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

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

$('body').height(); // call this first

iframeH = $('body').height(); //then try this
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top