rich: popupPanel hide сбрасывает полосы прокрутки - PullRequest
0 голосов
/ 20 марта 2012

У меня есть вид календаря с вертикальной полосой прокрутки.Как только вы нажимаете на местоположение, я показываю всплывающую панель, в которую можно вводить данные для записи календаря.Как только функция hide () в popupPanel вызывается, полоса прокрутки основного вида сбрасывается в верхнюю часть.Почему?

Теперь я сохраняю scrollTop перед открытием popupPanel и восстанавливаю его после закрытия, но это не красиво, потому что полоса прокрутки мигает таким образом.

У кого-нибудь есть предложения относительно того, почему позиция полосы прокруткитронут, скрыв popupPanel?

пример:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html
    xmlns="http://www.w3.org/1999/xhtml"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:a4j="http://richfaces.org/a4j"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:rich="http://richfaces.org/rich"
    xmlns:fn="http://java.sun.com/jsp/jstl/functions"
    xmlns:c="http://java.sun.com/jsp/jstl/core"
>

<h:head>
</h:head>

<h:body>
    <a4j:log id="log" level="INFO" mode="popup" hotkey="M"/> <!-- Ctrl+Shift+M -->

    <h:form id="formId">
        Click anywhere in the div to show the popup...
        <rich:popupPanel id="popupTest" width="200" height="150" modal="true">
            <f:facet name="header">
                Popup panel test
            </f:facet>
            <f:facet name="controls">
                <h:outputLink value="#" onclick="#{rich:component('popupTest')}.hide(); return false;">X</h:outputLink>
            </f:facet>
            And here some text...<br/>
            <a href="#" onclick="#{rich:component('popupTest')}.hide(); return false;">Hide popup 1</a><br/>
            <h:outputLink value="#" onclick="#{rich:component('popupTest')}.hide(); return false;">Hide popup 2</h:outputLink><br/>
            <a href="#" onclick="console.log('click...');">Console message</a><br/>
        </rich:popupPanel>
        <div style="height:2000px; width:100px; border:1px solid green; background:grey;" onclick="#{rich:component('popupTest')}.show()"/>
    </h:form>
</h:body>

</html>

Кажется, что любая обработка события браузером сбрасывает полосы прокрутки.Не имеет ничего общего с richfaces ... Но как обрабатывать событие, включая отправку значений во всплывающем окне, и по-прежнему не сбрасывать полосы прокрутки.Добавление 'return false' к клику будет невозможно ...

Спасибо, Мило ван дер Зее

Richfaces-4.1, MyFaces-2.1.6

1 Ответ

0 голосов
/ 21 марта 2012

это было что-то странное (по крайней мере, для меня). Панель popupPanel не содержалась в том же элементе div, что и содержимое полосы прокрутки. Как ни странно, это привело к сбросу полосы прокрутки, как только всплывающее окно закрылось.

Как только я добавил содержащий div с абсолютным положением, охватывающим всю страницу (слева, справа, сверху, снизу все установлено на 0), полоса прокрутки другого div была нетронутой:)

Я могу подумать, что всплывающее окно создает div, а затем удаляет его снова. Может быть, тогда браузер будет вынужден отображать части экрана, которые не нужно отображать. Просто угадай ...

MAG, Мило

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...