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 に答える