Я разработал логику JavaScript в соответствии с шаблоном модуля для формы CRM 2011. Во время загрузки формы иногда я получаю предупреждение как 'Crm object undefined'
но при обновлении (один или несколько) эта ошибка исчезает (работает плавно).
После довольно изощренной я все еще не могу понять, почему это происходит. Имеет ли это какое-либо отношение к модулю? потому onLoad
функция 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");
}
Я думаю, что проблема связана с объектом FSX. Где это загружено?
Если он не был загружен до того, как скрипт, определяющий ваш модуль, будет выполнен с ошибкой, а Crm будет неопределенным.
Существует красиво написана статья здесь о загрузке зависимых библиотек для формы CRM.
В нем предлагается ряд решений: 1) использовать RequireJs или HeadJs для динамической загрузки зависимых скриптов. 2) Загрузка библиотек путем включения их в команды ленты.