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

如何禁用MScrm 365本地版弹出表单后的页面刷新?

解决Dynamics 365本地版弹出表单后原页面刷新的问题

方法1:自定义弹出按钮替代原生功能

原生「pop out this form」按钮的默认逻辑包含页面刷新,可通过自定义按钮实现无刷新弹窗:

  • 进入解决方案,打开对应实体的表单编辑器,在表单工具栏添加自定义按钮
  • 为按钮配置JavaScript脚本,使用Xrm.Navigation.openForm方法实现弹窗,同时阻止原页面默认刷新:
function openFormWithoutRefresh(executionContext) {
    var formContext = executionContext.getFormContext();
    var entityId = formContext.data.entity.getId();
    var entityName = formContext.data.entity.getEntityName();
    
    Xrm.Navigation.openForm({
        entityName: entityName,
        entityId: entityId
    }, {
        openInNewWindow: true,
        height: 800,
        width: 1200
    });
    
    // 阻止按钮默认行为,避免页面刷新
    executionContext.getEventArgs().preventDefault();
}
  • 保存并发布自定义按钮,可选择隐藏原生弹出按钮

方法2:拦截原生按钮点击事件

若不想替换原生按钮,可通过Web资源修改其行为:

  • 创建JavaScript Web资源,在表单加载时注入脚本监听原生按钮点击:
function onFormLoad(executionContext) {
    setTimeout(function() {
        // 定位原生弹出按钮(需根据实际DOM结构调整选择器)
        var popOutBtn = document.querySelector("button[aria-label='pop out this form']");
        if (popOutBtn) {
            popOutBtn.addEventListener("click", function(e) {
                e.preventDefault();
                e.stopPropagation();
                
                var formContext = executionContext.getFormContext();
                Xrm.Navigation.openForm({
                    entityName: formContext.data.entity.getEntityName(),
                    entityId: formContext.data.entity.getId()
                }, {openInNewWindow: true});
            });
        }
    }, 1000); // 延迟执行确保DOM加载完成
}
  • 将该Web资源添加到表单的表单加载事件,保存并发布

注意事项

  • 自定义脚本需遵循Dynamics 365开发规范,避免直接操作DOM引发的版本兼容性问题
  • 测试时覆盖新建、编辑等场景,确保弹窗正常且原页面无刷新
  • 本地版操作需注意解决方案的发布权限,保证功能在所有环境生效

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 14:45:31