Деконструкция 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")
}
});