0

我根据我的 CRM 2011 表单的模块模式设计了 JavaScript 逻辑。在表单加载时,有时我会收到警报,'Crm object undefined'但在刷新(单个或多个)时,此错误消失(工作顺利)。

在相当挣扎之后,我仍然无法理解为什么会发生这种情况。它与模块模式有什么关系?因为onLoad函数被触发得很好,但困扰我的是为什么有时Crm没有创建对象。

var Crm = (function (FSX) {
    var xrm = {
        date: {
            setDate: function (sourceAttribute, targetAttribute) {
                // ... date setting logic ...
            }
        }
    }
    return xrm.date;
}(FSX));

function onLoad() {
    if (typeof Crm === 'undefined') {
        alert('Crm object undefined');
        return;
    }
    Crm.setDate("fsx_source", "fsx_target");
}
4

1 回答 1

1

我认为问题出在 FSX 对象上。这是在哪里加载的?

如果在定义模块的脚本执行之前尚未加载它,则代码将出错并且 Crm 将未定义。

这里有一篇写得很好的关于为 CRM 表单加载依赖库的文章。

它提出了多种解决方案: 1) 使用 RequireJs 或 HeadJs 来动态加载您的依赖脚本。2)通过将它们包含在功能区命令中来加载库。

于 2013-09-22T19:15:42.013 回答