我在 crm 2015 本地组织上以自定义实体的形式注册了 onSave 事件,这似乎进入了递归调用。在我点击保存后,事件继续调用它自己,直到我通过任务管理器杀死 IE 或 IE 崩溃,内存堆栈已满。我已经检查过了,它似乎与我在函数中的内容无关,这意味着我不会以任何方式再次触发 on save 事件。
这是功能代码:
function contract_OnSave(context) {
var eventArgs = context.getEventArgs();
if (eventArgs.getSaveMode() == 1) {
if (Xrm.Page.getAttribute("new_field").getValue() != null) {
var mort = Xrm.Page.getAttribute("new_field").getValue();
if (mort == true) {
Xrm.Utility.confirmDialog("Would you like to open a new window for a Case?",
saveFormOnOpenCase,
callback)
}
}
}
}
function saveFormOnOpenCase()
{
Xrm.Page.data.save();
var parameters = {};
parameters["new_subjectnew"] = 100000002;
// Open the window.
var windowOptions = {
openInNewWindow: true
};
Xrm.Utility.openEntityForm("incident", null, parameters, windowOptions);
}
function callback() {
}
在我看来,这是 CRM 2015 中的一个错误,之后我检查了 CRM 的版本,发现它是 RTM 版本。我建议将 CRM 升级到 Update 1,这似乎是最合乎逻辑的步骤。但即使升级后,问题仍然存在。
我尝试在字段上的 OnChange 事件上注册相同的函数,它工作正常,除了 openEntityForm 函数的 openInNewWindow 选项,它不会打开新窗口,但这是一个不同的问题。
我正在使用 IE 11。
有人可以确认这是否也在另一个 CRM 2015 环境中发生,或者我是否遗漏了什么?