Проблемы jQuery height() в Internet Explorer 6
-
03-07-2019 - |
Вопрос
Я использую 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