You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Oracle Apex 22.x:如何禁用窄屏时左侧导航菜单自动隐藏?

解决Oracle Apex 22.x窄屏导航自动隐藏问题

核心思路

要彻底禁用窄屏时的自动折叠逻辑,需从三个关键环节入手:移除窗口尺寸变化的自动折叠监听、取消点击菜单项的自动收起行为、保留右上角按钮的手动切换功能,同时修复二级菜单的显示异常。

具体实现代码

将以下代码添加到应用级JavaScript文件或**页面级的「Function and Global Variable Declaration」**中:

// 等待Apex框架初始化完成后执行
$(window).on('apexready', function() {
    // 1. 移除Apex自带的窗口resize导航折叠监听
    const resizeHandler = $(window).data('events')?.resize?.filter(fn => fn.namespace === 'apexNavigation')[0];
    if (resizeHandler) {
        $(window).off('resize.apexNavigation', resizeHandler.handler);
    }

    // 2. 取消点击菜单项时的自动折叠行为
    $(document).off('click', '.t-NavigationBar-item a', apex.navigation.toggleNavigation);
    
    // 3. 确保页面加载时导航处于展开状态(可根据需求注释)
    if ($('.t-PageBody').hasClass('js-navCollapsed')) {
        apex.navigation.toggleNavigation();
    }

    // 4. 修复二级菜单点击问题(阻止父菜单折叠)
    $(document).on('click', '.t-NavigationBar-item.has-children > a', function(e) {
        e.stopPropagation();
        // 手动切换二级菜单展开/收起
        $(this).closest('.t-NavigationBar-item').toggleClass('is-expanded');
    });
});

代码说明

  • apexready事件:确保在Apex所有组件加载完成后执行,避免操作未初始化的DOM元素
  • 移除resize监听:精准清除Apex内置的resize.apexNavigation事件,这是窄屏自动折叠的核心触发源
  • 取消菜单项折叠:移除Apex绑定的apex.navigation.toggleNavigation回调,避免点击菜单项时自动收起导航
  • 二级菜单修复:阻止父菜单链接的事件冒泡,手动控制二级菜单的展开/收起,解决原方案中二级菜单无法显示的问题
  • 初始展开控制:可选逻辑,确保页面加载时导航默认展开,可根据需求注释

额外注意事项

  • 若使用自定义主题,需检查并调整选择器(如.t-NavigationBar-item可能有不同类名)
  • 测试时覆盖多种窄屏尺寸,确保导航仅通过右上角按钮切换显示状态
  • 需移除之前的临时解决方案代码,避免逻辑冲突

内容的提问来源于stack exchange,提问作者DiChKr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 07:49:56