Деконструкция XPages выпадающих меню кнопки на странице прокрутки

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

<xe:dropDownButton disableTheme="true" styleClass="menuButton">
        <xe:this.treeNodes>
            <xe:basicContainerNode styleClass="menuTopLevel">
                <xe:this.children>
                    <xe:pageTreeNode label="Create New" page="NewInspection.xsp"
                        styleClass="menuItemSub1">
                    </xe:pageTreeNode>
                    <xe:pageTreeNode label="Reports" page="View.xsp"
                        styleClass="menuItemSub1">
                    </xe:pageTreeNode>
                </xe:this.children>
            </xe:basicContainerNode>
        </xe:this.treeNodes>
    </xe:dropDownButton>

У меня проблема в том, что когда пользователь находится на странице с возможностью прокрутки (то есть высота страницы превышает высоту области содержимого), и они прокручивают страницу, меню остается там, где она есть. рисуется, если он открыт, и не прокручивает содержимое страницы. Я ищу способ деконструировать любые / все открытые меню, если страница прокручивается, но мне не повезло с этим в XPages. Кто-нибудь сталкивался с чем-то подобным?

1 ответ

Решение

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

dojo.ready( function() {
var object = dojo.byId('view:_id1')
//console.log(object);
dojo.connect(object, 'onscroll', this, function(event) {
    // console.log('scroll');
        var object1 = dojo.byId('#{id:adminDropDown}_ab_0_dropdown')
        if (object1 != null) {
            dojo.style(object1, "display", "none")
        }
        var object1 = dojo.byId('#{id:insDropDown}_ab_0_dropdown')
        if (object1 != null) {
            dojo.style(object1, "display", "none")
        }
        var object1 = dojo.byId('#{id:emDropDown}_ab_0_dropdown')
        if (object1 != null) {
            dojo.style(object1, "display", "none")
        }
        var object1 = dojo.byId('widget_view:_id1:DateEntry_dropdown')
        if (object1 != null) {
            dojo.style(object1, "display", "none")
        }
    });
Другие вопросы по тегам