如何在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
相关产品推荐
相关产品推荐

