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

如何在Autodesk Forge中检测上下文菜单是否处于打开状态

检测Autodesk Forge上下文菜单激活状态的可行方法

Forge Viewer本身没有对外暴露直接判断上下文菜单是否打开的公开API,你可以通过以下两种常用方案实现检测:

  • 方案1:监听上下文菜单的显示/隐藏事件,搭配状态变量记录
    Forge Viewer的上下文菜单在触发显示时会抛出BUILD_CONTEXT_MENU事件,隐藏时会抛出HIDE_CONTEXT_MENU事件,你可以直接监听这两个事件维护一个全局状态变量,直接读取变量值就能知道菜单是否处于激活状态。
    示例代码片段:
    let isContextMenuActive = false;
    // 监听菜单显示事件
    viewer.addEventListener(Autodesk.Viewing.BUILD_CONTEXT_MENU, () => {
      isContextMenuActive = true;
    });
    // 监听菜单隐藏事件
    viewer.addEventListener(Autodesk.Viewing.HIDE_CONTEXT_MENU, () => {
      isContextMenuActive = false;
    });
    
    // 需要检测时直接读取isContextMenuActive的值即可
    
  • 方案2:DOM节点存在性检测
    上下文菜单渲染后会生成class为adsk-viewing-context-menu的DOM节点,你可以直接判断该节点是否存在且可见,来确定菜单是否处于激活状态。
    示例代码片段:
    function checkContextMenuActive() {
      const menuNode = document.querySelector('.adsk-viewing-context-menu');
      return !!menuNode && window.getComputedStyle(menuNode).display !== 'none';
    }
    

注意:方案1的事件监听逻辑兼容性更强,不受Viewer版本迭代时DOM类名变动的影响,更推荐优先使用。

内容的提问来源于stack exchange,提问作者M.A.T

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 11:45:03