XRM setDisable()在除IE以外的浏览器上不起作用。

3

如果在IE以外的浏览器中打开我们的XRM表单,会出现错误。您可以通过图像链接查看不太有用的错误消息。

enter image description here

这个错误不太清楚,所以我进行了调试,发现它导致页面加载时javascript函数出错。 它无法正确使用XRM setDisabled()函数:

Xrm.Page.getControl("simpeg_tipelokasi").setDisabled(true);

在IE中,它可以工作并且字段被禁用了,但奇怪的是在Chrome和Firefox中无法正常工作。你能帮我找出为什么在这些浏览器上不起作用吗?非常感谢!

编辑:

抱歉,实际上这是一个在两个浏览器中的ActiveX配置内部存在的问题,而不是setDisabled函数的问题。我之前调试时可能错过了它。 请查看此链接上的我的新帖子: Alternative to XRM Javascript calling webservice using ActiveX

3个回答

2

谢谢,我会查一下的。目前看来,这似乎是XRM定制的最佳选择之一。 - Gilang Bhagaskara

2
如果您当前没有安装Rollup 12,则Chrome浏览器不被官方支持。
如果可以的话,我建议您升级到Rollup 12以获得新的跨浏览器支持。请确保使用代码验证工具检查您的代码和自定义内容是否有任何问题。
如果无法升级,则可以尝试使用xrmservicetoolkit,这是一个CRM JavaScript库。

1
嗨,谢谢你关于代码验证工具和 JavaScript 库的建议。在 Rollup 12 发布之前,我们的开发被暂停了一段时间,但是在它发布后继续了下去,正如预期的那样,我们发现了几个问题,其中之一就是这个。非常不幸的是,大多数工具包都是最近才发布的,因此我们不得不应对定制的库。 - Gilang Bhagaskara

1
你需要将组织的更新程序更新至至少12(目前最新版本)。不过,我很惊讶你能够到达实际上出现错误的程度。如果使用不受支持的浏览器,您不应该能够登录并显示“主”表单。
编辑:
这绝对不是RU12和浏览器品牌的问题。我刚刚创建了一个新组织,并通过Web资源添加了以下功能。
function disableFullNameOnLoad(){
  Xrm.Page.getControl("fullname").setDisabled(true);
  alert("Full name disabled on load.");
}

function enableFullNameOnSave(){
  Xrm.Page.getControl("fullname").setDisabled(false);
  alert("Full name enabled on save.");
}

作为命名规则所示,禁用是在表单的 onload 中执行的,而启用是在其 onsave 中执行的。我使用 FF、IE 和 Cr 进入了 CRM(RU12,OP)。行为是一致的 - 当我打开表单时,fullname 是灰色不可编辑的,当我保存它时,它是可编辑的。
因此,无论您的平台存在什么问题,它都与跨浏览器不兼容性没有直接关系。请再次检查一下,当您添加我的示例中的确切代码,并按照我描述的方式连接到事件时,是否在 IE 和 FF 之间存在行为差异。

它实际上是有效的,在某些表单上可以良好运行,但在这个表单上有问题。如果还没有应用卷积,即使应用程序也无法加载,我明白这一点,所以我想问题出在我的代码中。 - Gilang Bhagaskara
谢谢您的回复。我已经重新检查了我的代码,结果发现问题实际上并不是由于setDisabled(我的错,抱歉!)。实际上,这是因为在调用Web服务时表单的ActiveX,因为在Chrome/Firefox中无法创建新的ActiveX实例。我将编辑/发布一个关于此错误的新问题。对于误导性的问题,我很抱歉,但感谢您的帮助! - Gilang Bhagaskara

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接