JQuery Height () Problemas com o Internet Explorer 6
-
03-07-2019 - |
Pergunta
Estou usando o jQuery 1.3.2.
Estou tendo problemas para obter uma "altura" correta no Internet Explorer 6. Os valores de altura estão corretos em todos os outros navegadores.
Eu também estou usando plug -in jQuery WRESize.
Cada vez que o navegador carrega, eu disparo um método que redimensiona os divs, iframes com base nas dimensões do navegador. (Há uma boa razão para isso.)
O valor retornado de $ ('corpo'). Hight (), no IE 6, parece adicionar 10 pixels após cada redimensionamento do navegador.
Alguém mais se deparou com algo assim?
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"));
Este código é para definir a altura de uma grade devExpress em seu contêiner pai. Ignore o fato de que o código pode ser melhor. :)
Existe algo diferente de "corpo" que eu poderia usar para me obter um tamanho correto? Eu tentei o objeto da janela ($ (janela) .Height ()), mas isso não parece ajudar muito.
Qualquer pensamento é apreciado!
Solução
O problema que você está enfrentando é mais provável de ser uma diferença de renderização do CSS. Devido a problemas flutuantes, preenchimento e diferenças de renderização de margem entre os navegadores.
tente pegar $ ("corpo"). InnerHeight () e $ ("corpo"). ExterHeight () E compare -os em diferentes navegadores, você obterá alguns resultados comuns. Na pior das hipóteses, você pode precisar correr alguns if
casos
Outras dicas
Claro, aqui estão algumas idéias:
Com o IE, e esp. IE mais velho, eu gosto de adicionar uma declaração de 1 a 10ms Settimeout em torno das minhas funções de renderização de altura-dá ao DOM e à chance de "relaxar"
Além disso, verifique se você está visível na página - para isso, pode ser necessário tirar as coisas da tela temporariamente usando a posição absoluta e, em seguida, revelá -las na tela novamente.
Outra coisa é que a altura () às vezes é instável. Tente .css ('altura') para recuperar alturas [também é mais rápido] e remova o 'px' para o que é as vezes uma medição mais verdadeira.
ou use um Dimensões plug -in Para o jQuery, que lhe dá muito mais para trabalhar e é o navegador cruzado.
Eu uso este plug -in para desenhar linhas de um arrastável para um droppable como eu mostrar aqui
$('body').height(); // call this first
iframeH = $('body').height(); //then try this