Customer Engagement (on-premises) での JavaScript の使用

Dynamics 365 for Customer Engagement は、JavaScript を使用する多くの機会を提供します。 Dynamics 365 Customer Engagement (on-premises) で使用されるすべての JavaScript は、JavaScript Web リソースを作成することによって追加されます。 このトピックには、JavaScript を使用する開発者のための情報と、Dynamics 365 Customer Engagement Web Services およびそのほかのソースの関連するトピックへのリンクが含まれます。

Dynamics 365 Customer Engagement (on-premises) で Javascript を使用できる領域

JavaScript を使用して、フォーム スクリプト、コマンド バー (リボン) コマンド、および Web リソースでのアクションを実行できます。

フォーム スクリプト

Dynamics 365 Customer Engagement (on-premises) の JavaScript の最も一般的な用途は、エンティティ フォーム イベントのイベント ハンドラーとして関数を追加することです。 詳細については、「JavaScript を使用した Customer Engagement のクライアント スクリプト」を参照してください。

コマンド バー (リボン) コマンド

Dynamics 365 Customer Engagement (on-premises) コマンド バーをカスタマイズすると、追加するコントロールのコマンドを構成できます。 次のコマンドには、コントロールを有効化するかどうか、コントロールが使用されたときはどのアクションを実行するかを制御するルールが含まれています。 詳細については、「コマンドおよびリボンをカスタマイズする」を参照してください。

Web リソース

Dynamics 365 Customer Engagement (on-premises) は、URL を使用してアクセスできるファイルのバイナリ表現を保管する組織所有のエンティティを提供します。 このファイルは、Web リソースと呼ばれます。 Web リソースには複数の種類があります。 JavaScript ライブラリを表す Web リソースは、JavaScript Web リソースと呼ばれます。 Web ページ (HTML) Web リソースを使用して、Web サーバーのファイルにするように、JavaScript ライブラリを使用するユーザー インターフェイスを提供できます。 これらのファイルは Dynamics 365 Customer Engagement (on-premises)の一部であるため、これらにアクセスするユーザーはすでに認証されています。 したがって、ユーザーを認証するためにコードを記述せずに Dynamics 365 Customer Engagement (on-premises) Web サービスを使用できます。 詳細については、Dynamics 365 Customer Engagement の Web リソース および Web リソースを使用して Dynamics 365 Customer Engagement データに関する作業をする を参照してください。

jQuery の使用

HTML Web リソースで jQuery を使用する
マイクロソフトは、jQuery は優れたクロスブラウザー ライブラリなので、HTML Web リソースとともに jQuery を使用して、ユーザー インターフェイスを提供することをお勧めします。

HTML Web リソースで、提供されたライブラリを制御します。DOM の操作に対しての制限はありません。 HTML Web リソース内で jQuery を気軽に使用してください。

Note

ClientGlobalContext.js.aspx へのスクリプト参照が自身の jQuery 参照後に置かれた場合、ClientGlobalContext.js.aspx scripts スクリプトは、前にダウンロードした jQuery のバージョンには上書きされます。 この問題を回避するには、Web リソース内に、他のスクリプト参照よりも前に ClientGlobalContext.js.aspx のスクリプト参照を格納します。

複数のブラウザーで Javascript を記述する

どのブラウザーが使用されるかわからないので、使用するスクリプトはサポートされているすべてのブラウザーで動作することを確認してください。 Internet Explorer と他のブラウザーの重要な違いのほとんどは、HTML および XML DOM の操作と関係しています。 HTML DOM の操作がサポートされていないため、スクリプト ロジックだけがサポートされる操作を実行し、Client API を使用している場合、他のブラウザーをサポートするために大きな変更は必要ではありません。

jQuery などのクロスマッピング ライブラリは、Web リソース開発のための良いソリューションですが、フォーム スクリプトまたはリボン コマンドに必要ありません。 詳細 : フォーム スクリプトに jQuery の使用を避ける

JavaScript プログラミングのベスト プラクティス

以下のセクションは Dynamics 365 Customer Engagement (on-premises) で JavaScript を使用する際のベスト プラクティスについて説明します。

サポートされないメソッドを使用しない

インターネットでは、サポートされていないメソッドを使用するさまざまな例や提案があります。 これらは、ページ コントロールに文書化されていない内部関数を活用するものもあります。 これらのメソッドは機能するかもしれませんが、サポートされていないため Dynamics 365 Customer Engagement (on-premises)の将来のバージョンでも引き続き使用できるとは期待できません。

HTML Web リソース ユーザー インターフェイスにクロスブラウザー Javascript ライブラリを使用する

jQuery などのクロスブラウザー JavaScript ライブラリには、複数のブラウザーをサポートする HTML Web リソースを開発する際は多くの利点があります。 jQuery などの JavaScript ライブラリは、Dynamics 365 Customer Engagement (on-premises) でサポートされるすべてのブラウザーに統合開発環境を提供します。 これらの機能は HTML Web リソースを使用してユーザー インターフェイスを提供するのに適しています。 jQuery などの JavaScript ライブラリは、ドキュメント オブジェクト モデル (DOM) と対話する一貫性のある方法を提供します。

フォーム スクリプトまたはコマンドで jQuery を使用しない

マイクロソフトはアプリケーション内のどのページでも jQuery を使用することをお勧めしませんし、サポートもしません。 これには、フォーム スクリプトおよびリボン コマンドが含まれています。 詳細情報 : jQuery の使用

コンテンツ デリバリ ネットワーク (CDN) ライブラリの制限を認識する

コンテンツ デリバリ ネットワーク (CDN) の JavaScript ライブラリは、公開されている Web サイトに多くの利点を提供します。 これらのライブラリはインターネットでホストされるため、ライブラリのコンテンツを含む Web リソースを作成する必要はありません。 Dynamics 365 Customer Engagement (on-premises) では、CDN JavaScript ライブラリを使用する前に、以下の問題を考慮する必要があります。

  • オフライン アクセス対応 Dynamics 365 for Microsoft Office Outlook クライアントのユーザーは、オフライン作業中にインターネット接続がない状態で作業できます。 JavaScript ライブラリにインターネット接続が必要な場合、コードは失敗します。

  • 組織によっては、従業員のインターネット アクセスを制限することがあります。 ネットワークを CDN ライブラリのサイトにアクセスできるように構成しないと、それらの組織において、コードが失敗することがあります。

    CDN ライブラリの使用の代替方法は、ライブラリのコンテンツと共にスクリプト (JavaScript) Web リソースを作成することです。 Web リソースは組織所有のエンティティなので、オフライン アクセス対応の Dynamics 365 for Outlook ユーザーがオフラインのときに同期されます。 これらの Web リソースはアプリケーションの一部になるため、組織がインターネットへのアクセスを制限しても妨げられません。

複数のブラウザーに関数を記述する際、機能検出を使用する

jQuery のようなクロスブラウザー ライブラリを使用する場合でも、ブラウザー間の違いを認識する必要があります。 navigator.useragent プロパティのクエリに使用されるブラウザーを検出できます。 これでは、ブラウザーの検出と呼ばれます。 ブラウザーの検出は、新しいバージョンのブラウザーにどんな機能があるかを検討することはできないので、通常適切な方法ではありません。 また、一部のブラウザーには navigation.useragent プロパティを変更する機能があるので、別のブラウザーのように見えます。

機能検出が推奨されている方法です。 利用できる機能を検出することで、どのブラウザーを使用しているかわからなくても、サポートするブラウザーのコード パスを作成できます。 機能検出に関する詳細については、「ブラウザーではなく機能を検出する方法」を参照してください。

DOM にアクセスしない

JavaScript デベロッパは、コードのドキュメント オブジェクト モデル (DOM) 要素との対話に使用されます。 window.getElementById メソッドまたは jQuery ライブラリを使用する場合があります。 HTML Web リソースでこれらの方法を自由に使用できますが、Dynamics 365 Customer Engagement (on-premises) アプリケーション ページまたはエンティティ フォームの要素にアクセスするためにはサポートされていません。 代わりに、エンティティ フォーム要素へのアクセスは、Client API オブジェクト モデル を通して公開されます。 Dynamics 365 Customer Engagement (on-premises) 開発チームが、要素の ID の値を含むページの構成方法を変更する権利を保持します。それで、Client API オブジェクト モデルを使用することで、コードがページの実装方法の変更から保護されます。

JavaScript 関数に一意の名前を指定する

HTML ページの開発者が一人しかいない場合、使用する JavaScript 関数名を簡単に管理できます。 Dynamics 365 Customer Engagement (on-premises) で、他のソリューションは JavaScript 関数を関数が使用されているページに追加する場合があります。

ページに同じ名前の 2 種類の JavaScript 関数がある場合は、最初に定義された関数は 2 番目の関数で上書きされます。 したがって JavaScript 関数に一意の名前を定義してください。 詳細については、「JavaScript を使用した Customer Engagement のクライアント スクリプト」を参照してください。

非同期データ アクセス方法を使用する

Dynamics 365 Customer Engagement (on-premises) Web サービスを使用してデータにアクセスするときは、常に、非同期に実行するように構成された XMLHttpRequest を使用してください。 なぜならば、ブラウザーは単一スレッドで作動するからです。 そのスレッドが長時間のプロセスを同期して実行するのに使用されている場合、ブラウザーは応答を停止します。

Note

同期 XMLHttpRequests は、エンド ユーザーのエクスペリエンスに悪影響があるため、ブラウザーのメイン スレッドで使用されなくなりました。 一部のブラウザーは、今ではこれが検出されると警告を提供します。 ブラウザーが将来的にいつかの時点で仕様を実装すると、InvalidAccessError 例外がスローされます。 詳細情報 : https://www.w3.org/TR/XMLHttpRequest/#synchronous-flag および https://xhr.spec.whatwg.org/#the-open()-method

参照

クライアント アプリケーション拡張機能の記述
Web リソースを使用した Customer Engagement データに関する作業
JavaScript を使用した、Customer Engagement (on-premises) でのクライアント スクリプト
Dynamics 365 Customer Engagement (on-premises) 用リボンのカスタマイズ
Dynamics 365 Customer Engagement (on-premises) の Web リソース

Client API オブジェクト モデルについて