JQuery Аккордеон:Изменение размера моего элемента управления заголовком

StackOverflow https://stackoverflow.com/questions/1088279

Вопрос

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

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

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

            }

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

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


Странный..В IE должен быть обходной путь.Если я опустошу свою функцию и просто запущу:

window.scroll(0,900);

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


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

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

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

Решение 2

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

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?Этот фрагмент, очевидно, просто получает высоту заголовка и при этом приравнивает высоту элемента содержимого.Проблема заключалась в том (и только в IE), что функция clientHeight всегда возвращала «0».Я заменил их на header.offsetHeight, и все в порядке.

Таким образом, может показаться, что в IE мои функции clientHeight работают неправильно.

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

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

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

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

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

ОБНОВЛЯТЬ: я только что нашел сайт в котором рассказывается о том, как решить проблему с полосой прокрутки.Просто хотел дать возможность любому, кто столкнется с этим, сделать гораздо более чистое исправление.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top