2009-07-06 2 views
1

Я использую JQuery Accordion. Все хорошо в FireFox. В IE7, однако, когда я нажимаю ссылку в моем документе, которая расширяет одно из заголовков меню аккордеона, мое управление сервером заголовков имеет размер (уменьшенный). Как остановить отображение экрана? Это peice из JavaScript в вопросе:JQuery Accordion: изменение размера моего управления заголовком

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

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

      } 

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

То, что я хочу, это .accordion('activate',indexval); не изменить формат заголовка.


Weird .. Для этого в IE должна быть создана работа. Если я освобожу свою функцию и просто запустил:

window.scroll(0,900); 

Я до сих пор теряю контроль над моим отделением наверху ?! У кого-нибудь есть предложение?


Возможно, это проблема .. На самом деле страница состоит из двух разделов. Верхний div предназначен для отображения контроля заголовка (до дней MasterPages), а нижняя часть - это раздел, который я пытаюсь прокрутить. «Content» div - это тот, который требуется для прокрутки. «Заголовок» div - это тот, который исчезает при прокрутке. Кто-нибудь может спасти меня? :)

<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> 

ответ

0

Так что я понял. Я работаю над старым кодом, который я унаследовал. Я лаял неправильное дерево. Я нашел следующий код в заголовке страницы, который огорчил меня:

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"; 

      } 
     } 


    } 

Обратите внимание на вызовы header.clientHeight? Этот фрагмент, очевидно, просто получает высоту заголовка, и при этом это соответствует высоте содержимого div. Проблема была (и только в IE), функция clientHeight всегда возвращала «0». Я заменил их header.offsetHeight, и все хорошо.

Таким образом, похоже, что в IE мой clientHeight функционирует там, где не работает правильно.

+0

Ницца, рад, что вы поняли проблему. Вы должны выбрать этот «ответ» как правильный, чтобы люди знали, что он решен. – thebrokencube

2

У вас есть полоса прокрутки в браузере до и после расширения меню?

Что может случиться, так это то, что перед тем, как вы откроете меню, все будет на экране, так что браузер не даст вам полосу прокрутки; но при расширении меню ему требуется больше места, поэтому браузер добавляет полосу прокрутки, заставляя веб-страницу «масштабироваться» вниз.

Я не уверен, как исправить эту проблему, не устанавливая большой min-height в вашем файле css, чтобы всегда отображалась полоса прокрутки.

Надеюсь, что это поможет.

UPDATE: Я только что нашел a website, который говорит о том, как решить проблему ScrollBar. Просто хотел, чтобы кто-то другой, кто сталкивался с этим, стал гораздо более чистым.

+0

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

Смежные вопросы