Dynamics 365 Ribbon Workbench自定义按钮未弹出模态框,跳转至新标签页
解决Dynamics 365 9.0中自定义按钮打开Web Resource为新标签页的问题
我帮你排查过不少Dynamics 9.0统一界面里的Ribbon按钮配置问题,你遇到的这个“Sync Task”按钮本该弹出模态框却打开新标签页的情况,大概率是按钮动作的配置没适配统一界面特性,下面是几个最可能的原因和修复步骤:
1. Ribbon Workbench中按钮动作类型选错了
这是最常见的问题——经典界面和统一界面对于打开Web Resource的动作支持有差异:
- 如果你给按钮配置的是
Url类型动作,统一界面会默认在新标签页打开链接,这和经典界面的行为不同 - 正确的做法是改用
OpenWebResource类型动作:- 打开Ribbon Workbench,找到你的“Sync Task”按钮对应的Command
- 删除原有的
Url动作,添加OpenWebResource动作 - 配置动作参数:
WebResourceName:填写你的HTML Web Resource的完整名称(比如new_SyncTask.html)Modal:设置为true- 可选:设置
Width和Height来定义模态框的尺寸(比如600、400)
2. 使用JavaScript动作时调用了错误的API
如果你的按钮是通过自定义JavaScript来打开Web Resource,要确保用统一界面兼容的API:
- 避免直接用
window.open()(这会强制打开新标签页) - 改用Dynamics官方提供的API,在9.0版本中可以用
Xrm.Navigation.openWebResource(),示例代码如下:
function openSyncTaskModal() { Xrm.Navigation.openWebResource("new_SyncTask.html", { openInNewWindow: false, // 关键:设置为false打开模态框 width: 600, height: 400 }); }
然后在Ribbon Workbench中把按钮的Command关联到这个JavaScript函数即可。
3. 检查Web Resource本身的配置
虽然概率较低,但也可以排除一下:
- 确认你的Web Resource类型是
HTML,没有误选其他类型 - 检查HTML页面代码,确保没有主动调用
window.open()或者修改页面跳转行为的代码
最后别忘了发布和清缓存
修改配置后,一定要:
- 在Ribbon Workbench中点击Publish All Customizations发布所有自定义项
- 清空浏览器缓存(或者用隐私窗口测试),避免Dynamics加载旧的Ribbon配置缓存
内容的提问来源于stack exchange,提问作者greg




