Pergunta

Eu estou usando o JQuery acordeão. Tudo está bem no FireFox. No IE7, no entanto, quando eu clicar em um link no meu documento que expande um dos títulos do menu acordeão meu controle de servidor cabeçalho é re porte (encolhido). Como faço para parar a tela de re dimensionamento? Este é o pedaço de JavaScript em questão:

if (!$('h3.ReferenceBackgroundHeader', '#References').hasClass('ui-state-active')) {

                $("#References").accordion('activate', 0);

            }

            window.scrollTo(0, $('#References').offset().top);
            return false;

O que eu quero é o .accordion('activate',indexval); não mudar meu cabeçalho formatação.


Estranho .. Tem que haver um em torno do trabalho para isso no IE. Se eu esvaziar a minha função para fora e apenas executar:

window.scroll(0,900);

Eu ainda perder meu controle Sever em cima ?! Alguém tem uma sugestão?


Talvez este seja o problema .. A página é na verdade composta de duas divs. O div superior é para exibir o controle de cabeçalho (antes dos dias de MasterPages) ea seção inferior é a seção Eu estou tentando rolar dentro. O div "conteúdo" é o que eu exigem a capacidade de rolagem. O div "header" é aquele que desaparece quando eu rolar. Alguém pode me salvar ainda? :)

<body>
<form id="Form1" method="post" runat="server">
    <div id="header">
        <uc1:Header ID="headerControl" runat="server"></uc1:Header>
    </div>
    <div id="content" style="overflow:auto">
        <asp:PlaceHolder ID="contentPlaceholder" runat="server"></asp:PlaceHolder>
    </div>
</form>

Foi útil?

Solução 2

Então, eu tenho que descobri. Eu estou trabalhando em código legado que eu herdei. Eu estava latindo para a árvore errada. Eu encontrei o seguinte código no cabeçalho da página dando-me luto:

function resizeContentWindowScrollBar() {
         var contentDiv = document.getElementById("content");
         var header = document.getElementById("header");

         if (header != null) {
             var desiredHeight = document.body.clientHeight - header.clientHeight;

             if (desiredHeight > 0) {
                 contentDiv.style.height = (document.body.clientHeight - header.clientHeight) + "px";

             }
         }


     }

Observe as chamadas header.clientHeight? Este trecho, obviamente, apenas obtém a altura do cabeçalho e com isso equivale a altura div conteúdo. O problema era (e somente no IE você mente) a função clientHeight foi sempre retornando "0". Eu substituí-los com header.offsetHeight e está tudo bem.

Por isso, parece que no IE minhas funções clientWidth onde não está funcionando corretamente.

Outras dicas

Você tem uma barra de rolagem no seu browser antes e depois de expandir o menu?

O que pode estar acontecendo é que, antes de expandir o menu, tudo se encaixa na tela, para que o navegador não dar-lhe uma barra de rolagem; mas quando você expandir o menu que precisa de mais espaço, para que o navegador adiciona uma barra de rolagem, fazendo com que a página para baixo "escala".

Eu não sei como corrigir essa questão sem definir uma grande min-height no seu arquivo css para que a barra de rolagem sempre aparece.

Espero que ajude.

UPDATE: Eu só descobri a site que fala sobre como corrigir o problema barra de rolagem. Só queria que qualquer outra pessoa que se depara com esta uma solução mais limpa muito.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top