Dynamics 365 for Customer Engagement は、JavaScript を使用する多くの機会を提供します。 Dynamics 365 Customer Engagement (オンプレミス) で使用されるすべての JavaScript は、JavaScript Web リソースを作成することによって追加されます。 このトピックには、JavaScript を使用する開発者向けの情報があり、Dynamics 365 Customer Engagement Web サービスおよびその他のソースの関連トピックへのリンクが含まれています。
Dynamics 365 Customer Engagement (オンプレミス) で JavaScript を使用できる領域
JavaScript を使用して、フォーム スクリプト、コマンド バー (リボン) コマンド、および Web リソースでアクションを実行できます。
フォーム スクリプト
Dynamics 365 Customer Engagement (オンプレミス) での JavaScript の最も一般的な用途は、エンティティ フォーム イベントのイベント ハンドラーとして関数を追加することです。 詳細については、「 JavaScript を使用した Customer Engagement でのクライアント スクリプト」を参照してください。
コマンド バー (リボン) コマンド
Dynamics 365 Customer Engagement (オンプレミス) コマンド バーをカスタマイズするときに、追加するコントロールのコマンドを構成できます。 これらのコマンドには、コントロールを有効にするかどうか、およびコントロールを使用するときに実行されるアクションを制御するルールが含まれています。 詳細については、「 コマンドとリボンをカスタマイズする」を参照してください。
Web リソース
Dynamics 365 Customer Engagement (オンプレミス) は、URL を使用してアクセスできるファイルのバイナリ表現を格納する組織所有のエンティティを提供します。 このファイルは Web リソースと呼ばれます。 Web リソースにはいくつかの種類があります。 JavaScript ライブラリを表す Web リソースは、JavaScript Web リソースと呼ばれます。 Web サーバー上のファイルの場合と同様に、Web ページ (HTML) Web リソースを使用して、JavaScript ライブラリを含むユーザー インターフェイスを提供できます。 これらのファイルは Dynamics 365 Customer Engagement (オンプレミス) の一部であるため、それらにアクセスするユーザーは既に認証されています。 そのため、ユーザーを認証するコードを記述しなくても、Dynamics 365 Customer Engagement (オンプレミス) Web サービスを使用できます。 詳細については、「 Dynamics 365 Customer Engagement の Web リソース 」および「 Web リソースを使用した Dynamics 365 Customer Engagement データの操作」を参照してください。
jQuery の使用
HTML Web リソースで jQuery を使用する
優れたクロスブラウザー ライブラリであるため、jQuery と HTML Web リソースを組み合わせて使用してユーザー インターフェイスを提供することをお勧めします。
HTML Web リソースでは、存在するライブラリを制御します。DOM の操作に対する制限はありません。 HTML Web リソース内で jQuery を自由に使用できます。
注
ClientGlobalContext.js.aspx へのスクリプト参照が独自の jQuery 参照の後に配置された場合、ClientGlobalContext.js.aspx スクリプトによって、以前に読み込まれたバージョンの jQuery が上書きされます。 これを回避するには、web リソース内の他のスクリプト参照の前に、ClientGlobalContext.js.aspx スクリプト参照を配置します。
複数のブラウザー用に JavaScript を記述する
使用するブラウザーがわからないため、使用するスクリプトがサポートされているすべてのブラウザーで動作することを確認する必要があります。 Internet Explorer と他のブラウザーの大きな違いのほとんどは、HTML および XML DOM 操作と関係があります。 HTML DOM 操作はサポートされていないため、スクリプト ロジックがサポートされているアクションのみを実行し、 クライアント API を使用している場合、他のブラウザーをサポートするために必要な変更は小さい可能性があります。
jQuery のようなクロスブラウザー ライブラリは、Web リソースを開発するための優れたソリューションですが、フォーム スクリプトやリボン コマンドには必要ありません。 詳細情報: フォーム スクリプトに jQuery を使用しないようにする
JavaScript プログラミングのベスト プラクティス
次のセクションでは、Dynamics 365 Customer Engagement (オンプレミス) で JavaScript を使用する場合のベスト プラクティスについて説明します。
サポートされていないメソッドの使用を避ける
インターネット上では、サポートされていない方法を使用して説明する多くの例や提案を見つけることができます。 これには、ページ コントロールの文書化されていない内部関数の活用が含まれる場合があります。 これらの方法は機能する可能性がありますが、サポートされていないため、将来のバージョンの Dynamics 365 Customer Engagement (オンプレミス) で引き続き動作することを期待することはできません。
HTML Web リソース ユーザー インターフェイスにクロスブラウザー JavaScript ライブラリを使用する
jQuery などのクロスブラウザー JavaScript ライブラリは、複数のブラウザーをサポートする必要がある HTML Web リソースを開発する際に多くの利点を提供します。 jQuery などの JavaScript ライブラリは、Dynamics 365 Customer Engagement (オンプレミス) でサポートされているすべてのブラウザーに統合された開発エクスペリエンスを提供します。 これらの機能は、HTML Web リソースを使用してユーザー インターフェイスを提供する場合に適しています。 jQuery などの JavaScript ライブラリは、ドキュメント オブジェクト モデル (DOM) と対話するための一貫した方法を提供します。
フォーム スクリプトまたはコマンドに jQuery を使用しない
アプリケーション内のページに jQuery を使用することはお勧めしません。 これには、フォーム スクリプトとリボン コマンドが含まれます。 詳細情報: jQuery の使用。
コンテンツ配信ネットワーク (CDN) ライブラリの制限を認識する
コンテンツ配信ネットワーク (CDN) JavaScript ライブラリは、パブリック Web サイトに多くの利点を提供します。 これらのライブラリはインターネット上でホストされているため、ライブラリのコンテンツを含む Web リソースを作成する必要はありません。 Dynamics 365 Customer Engagement (オンプレミス) では、CDN JavaScript ライブラリを使用する前に、次の問題を考慮する必要があります。
Dynamics 365 for Microsoft Office Outlook with Offline Access クライアントのユーザーは、オフライン作業中にインターネット接続なしで作業できます。 JavaScript ライブラリのインターネット接続に依存している場合、コードは失敗します。
一部の組織では、従業員のインターネット アクセスが制限されます。 CDN ライブラリ サイトへのアクセスを許可するようにネットワークを構成しない限り、これらの組織のコードが失敗する可能性があります。
CDN ライブラリを使用する代わりに、ライブラリの内容を含むスクリプト (JavaScript) Web リソースを作成します。 Web リソースは組織所有のエンティティであるため、Dynamics 365 for Outlook with Offline Access ユーザーがオフラインになると同期されます。 これらの Web リソースはアプリケーションの一部になったため、組織がインターネットへのアクセスを制限してもブロックされません。
複数のブラウザーの関数を記述するときに機能検出を使用する
jQuery のようなクロスブラウザー ライブラリを使用する場合でも、ブラウザー間の違いを十分に認識する必要があります。
navigator.useragent
プロパティに対してクエリを実行すると、通常、どのブラウザーが使用されているかを検出できます。 これはブラウザー検出と呼ばれます。 ブラウザー検出は、ブラウザーの新しいバージョンの機能を考慮できないため、ほとんどの場合、適切な戦略ではありません。 また、一部のブラウザーでは、 navigation.useragent
プロパティを変更して、別のブラウザーのように見えるようにする機能を提供しています。
機能検出は推奨される方法です。 使用可能な機能を検出することで、どのブラウザーが使用されているかを正確に把握しなくても、サポートするブラウザーのコード パスを作成できます。 機能検出の詳細については、「 ブラウザーではなく機能を検出する方法」を参照してください。
DOM にアクセスしない
JavaScript 開発者は、コード内で Document Object Model (DOM) 要素を操作するために使用されます。
window.getElementById
メソッドまたは jQuery ライブラリを使用できます。 これらの手法は HTML Web リソースで自由に使用できますが、Dynamics 365 Customer Engagement (オンプレミス) アプリケーション ページまたはエンティティ フォームの要素へのアクセスはサポートされていません。 代わりに、エンティティ フォーム要素へのアクセスは 、クライアント API オブジェクト モデルを通じて公開されます。 Dynamics 365 Customer Engagement (オンプレミス) 開発チームは、要素の ID
値を含め、ページの構成方法を変更する権利を留保するため、 クライアント API オブジェクト モデル を使用すると、ページの実装方法の変更からコードが保護されます。
JavaScript 関数の一意の名前を定義する
HTML ページの唯一の開発者は、使用する JavaScript 関数の名前を簡単に管理できます。 Dynamics 365 Customer Engagement (オンプレミス) では、他のソリューションによって、関数が使用されているページに JavaScript 関数が追加される場合があります。
ページ上の 2 つの JavaScript 関数の名前が同じである場合、定義された最初の関数は 2 番目の関数によって上書きされます。 このため、JavaScript 関数の一意の名前を必ず定義してください。 詳細については、「 JavaScript を使用した Customer Engagement でのクライアント スクリプト」を参照してください。
非同期データ アクセスメソッドを使用する
Dynamics 365 Customer Engagement (オンプレミス) Web サービスを使用してデータにアクセスする場合は、常に非同期的に実行するように構成された XMLHttpRequest を使用します。 その理由は、ブラウザーが 1 つのスレッドで動作するということです。 そのスレッドが実行時間の長いプロセスを同期的に実行するために使用されている場合、ブラウザーは応答を停止します。
注
同期 XMLHttpRequest は、エンド ユーザーのエクスペリエンスに悪影響を及ぼすため、ブラウザーのメイン スレッドでは非推奨です。 一部のブラウザーでは、これが検出されたときに警告が表示されるようになりました。 ブラウザーが将来ある時点で仕様を実装すると、InvalidAccessError 例外がスローされます。 詳細情報: https://www.w3.org/TR/XMLHttpRequest/#synchronous-flag と https://xhr.spec.whatwg.org/#the-open()-method
こちらも参照ください
クライアント アプリケーション拡張機能を記述する
Web リソースを使用して Customer Engagement データを操作する
JavaScript を使用した Customer Engagement (オンプレミス) でのクライアント スクリプト
Dynamics 365 Customer Engagement (on-premises) のリボンのカスタマイズ
Dynamics 365 Customer Engagement (on-premises) の Web リソース