JQuery Аккордеон:Изменение размера моего элемента управления заголовком
-
23-08-2019 - |
Вопрос
Я использую 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-файле, чтобы полоса прокрутки всегда отображалась.
Надеюсь, это поможет.
ОБНОВЛЯТЬ: я только что нашел сайт в котором рассказывается о том, как решить проблему с полосой прокрутки.Просто хотел дать возможность любому, кто столкнется с этим, сделать гораздо более чистое исправление.