Utilisation de JavaScript avec Microsoft Dynamics 365

 

Date de publication : janvier 2017

S’applique à : Dynamics 365 (online), Dynamics 365 (on-premises), Dynamics CRM 2016, Dynamics CRM Online

Microsoft Dynamics 365 (Online et local) fournissent de nombreuses opportunités pour utiliser JavaScript. Tous les JavaScript utilisés dans Microsoft Dynamics 365 sont ajoutés en créant des ressources Web JavaScript. Cette rubrique fournit des informations pour les développeurs qui utilisent JavaScript et inclut des liens vers les rubriques concernées dans SDK de Microsoft Dynamics 365 et d’autres sources.

Contenu de la rubrique

Zones dans lesquelles vous pouvez utiliser JavaScript dans Microsoft Dynamics 365

Utiliser jQuery

Écrire en JavaScript pour plusieurs navigateurs

Meilleures pratiques en matière de programmation JavaScript

Débogage de JavaScript dans Microsoft Dynamics 365

Zones dans lesquelles vous pouvez utiliser JavaScript dans Microsoft Dynamics 365

Vous pouvez utiliser JavaScript pour effectuer des actions dans des scripts de formulaire, la barre de commandes (ruban) et les ressources Web.

Scripts de formulaires

L’utilisation la plus courante de JavaScript dans Microsoft Dynamics 365 consiste à ajouter des fonctionnalités en tant que gestionnaires d’événements pour les événements de formulaire d’entité. Pour plus d'informations, voir Écrire du code pour les formulaires Microsoft Dynamics 365.

Commandes de la barre de commandes (ruban)

Lorsque vous personnalisez la barre de commande Microsoft Dynamics 365, vous pouvez configurer les commandes pour les contrôles que vous ajoutez. Ces commandes contiennent les règles qui vérifient si le contrôle est activé et la nature de l’action qui est effectuée lorsque le contrôle est utilisé. Pour plus d'informations, voir Personnaliser les commandes et le ruban.

Ressources Web

Microsoft Dynamics 365 fournit une entité détenue par une organisation qui stocke une représentation binaire d’un fichier accessible via une URL. Ce fichier est appelé une ressource Web. Il existe plusieurs types de ressources Web. Une ressource Web qui représente une bibliothèque JavaScript est appelée une ressource Web JavaScript. Vous pouvez utiliser une ressource Web (HTML) de page Web pour fournir une interface utilisateur avec des bibliothèques JavaScript incluses de la même manière que pour des fichiers sur un serveur Web. Ces fichiers font partie de Microsoft Dynamics 365, les utilisateurs qui y accèdent sont déjà authentifiés. Par conséquent, vous pouvez utiliser les services Web Microsoft Dynamics 365 sans devoir entrer de code pour authentifier l’utilisateur. Pour plus d'informations, consultez les rubriques Ressources Web pour Microsoft Dynamics 365 et Utiliser des données Dynamics 365 à l'aide de ressources Web.

Utiliser jQuery

  • Utiliser JQuery avec des ressources Web HTML
    Nous recommandons d’utiliser jQuery avec des ressources Web HTML pour fournir des interfaces utilisateur, car il s’agit d’une excellente bibliothèque multi-navigateur.

    Les ressources Web HTML vous permettent de contrôler les bibliothèques qui sont présentes, et il n’y a aucune restriction dans la gestion des éléments DOM. Sentez-vous libre d’utiliser jQuery dans vos ressources Web HTML.

  • Évitez d’utiliser jQuery avec des scripts de formulaire ou des commandes du ruban
    Nous ne vous recommandons pas d’utiliser jQuery dans les scripts de formulaire ni les commandes du ruban.

    Le plus grand atout de jQuery est qu’il permet une gestion facile des éléments DOM multi-navigateurs. Cette fonctionnalité est explicitement non prise en charge dans les scripts de formulaire et les commandes du ruban. Restreignez vos scripts pour utiliser les bibliothèques Xrm.Page et Xrm.Utility disponibles dans les scripts de formulaire et les commandes du ruban. Si vous décidez d’utiliser les fonctionnalités suivantes de jQuery qui sont utiles avec Microsoft Dynamics 365 et d’inclure la possibilité d’utiliser $.ajax, prenez en compte les éléments suivants :

    • Pour obtenir les meilleures performances, ne chargez pas jQuery dans la page si vous n’en avez pas besoin

    • L'utilisation de $.ajax pour exécuter des requêtes dans les services Web Microsoft Dynamics 365 est prise en charge, mais il existe des solutions de remplacement. L’alternative à l’utilisation de $.ajax consiste à utiliser l’objet XMLHttpRequest des navigateurs directement. La méthode $.ajax jQuery est un simple wrapper pour cet objet. Si vous utilisez l’objet XMLHttpRequest natif directement, vous n’avez pas besoin de télécharger jQuery.

    • Chaque version de jQuery qui est chargée dans une page peut être une version différente. Différentes versions de jQuery ont différents comportements qui peuvent générer des problèmes lorsque plusieurs versions de jQuery sont chargées sur la même page. Il existe une technique permettant de pallier à cela, mais elle dépend de la modification de la bibliothèque jQuery et des autres bibliothèques en fonction de jQuery.Pour plus d'informations :jQuery et l’interface utilisateur jQuery avec Dynamics CRM 2011 et 2013, jQuery.noConflict()

      Notes

      Àla suite de Mise à jour 1 de Microsoft Dynamics CRM Online 2015, les scripts de formulaire s'exécutent dans une étendue autre que l'instance de jQuery utilisée par l'application. Cela signifie qu'il est possible qu'aucune instance de jQuery ne soit disponible lorsque votre code tente d'utiliser jQuery.noConflict. Si vous devez utiliser jQuery, vous devez d'abord détecter si une instance de jQuery existe avant de tenter d'utiliser jQuery.noConflict.

Écrire en JavaScript pour plusieurs navigateurs

Comme vous ne connaissez pas quel navigateur est opérationnel, vous devez vous assurer que tous les scripts utilisés fonctionnent avec tous les navigateurs pris en charge. La plupart des différences importantes entre Internet Explorer et un autre navigateur concernent la gestion des éléments HTML et DOM XML. Comme la gestion des éléments DOM HTML n’est pas prise en charge, si la logique de script effectue uniquement des actions prises en charge et utilise l’API Xrm.Page, les modifications requises pour la prise en charge d’autres navigateurs peuvent être réduites. Utilisez Outil de validation de code personnalisé pour identifier le code qui est exécuté uniquement pour Internet Explorer.

Une bibliothèque multi-navigateur comme jQuery est une excellente solution pour développer des ressources Web mais ne doit pas être nécessaire pour les scripts de formulaire ou les commandes du ruban.Pour plus d'informations :Utiliser jQuery

Prendre en charge d’autres navigateurs

Comme Microsoft Dynamics 365 (Online et local)prend en charge les normes W3C, l’application est accessible avec n’importe quel navigateur moderne et à partir de n’importe quelle plateforme compatible avec ces normes. Cependant, Microsoft Dynamics 365 est uniquement testé avec un ensemble de navigateurs et de plateformes. Pour obtenir la liste des plateformes et des navigateurs pris en charge, voir TechNet : Navigateurs Web pris en charge.

Si vous utilisez un navigateur, ou la version d’un navigateur, qui n’est pas pris(e) en charge et que vous entrez uniquement le nom du serveur ou le nom du serveur avec l’organisation comme URL, vous serez redirigé(e) vers la page Microsoft Dynamics 365 pour téléphones. Les pages Dynamics 365 pour téléphones peuvent fonctionner correctement dans la plupart des navigateurs, tels que les navigateurs utilisés par les appareils mobiles, avec des fonctionnalités limitées.

Meilleures pratiques en matière de programmation JavaScript

Les sections suivantes décrivent les meilleures pratiques lorsque vous utilisez JavaScript avec Microsoft Dynamics 365.

Évitez d’utiliser les méthodes non compatibles.

Sur Internet, vous pouvez rechercher plusieurs exemples ou suggestions qui décrivent l’utilisation des méthodes non prises en charge. Ils peuvent inclure l’optimisation de la fonctionnalité interne non documentée pour les contrôles de page. Ces méthodes peuvent fonctionner mais parce qu’elles ne sont pas prises en charge, vous ne pourrez envisager qu’elles continuent de fonctionner dans les futures versions de Microsoft Dynamics 365.

Utilisez Outil de validation de code personnalisé pour identifier le code qui utilise les méthodes non prises en charge.

Utiliser une bibliothèque JavaScript multi-navigateur pour les interfaces utilisateur de ressources Web HTML

Une bibliothèque JavaScript multi-navigateur, comme jQuery, fournit de nombreux avantages lors du développement de ressources Web HTML qui doivent prendre en charge plusieurs navigateurs. Les bibliothèques JavaScript comme jQuery fournissent une expérience de développement unifiée pour tous les navigateurs pris en charge par Microsoft Dynamics 365. Ces fonctionnalités sont appropriées lorsque vous utilisez des ressources Web HTML pour fournir des interfaces utilisateur. Les bibliothèques JavaScript comme jQuery fournissent des méthodes cohérentes permettant d'interagir avec le DOM (Document Object Model).

Ne pas utiliser jQuery pour les scripts ou commandes de formulaire

Nous ne vous recommandons la prise en charge de jQuery pour les pages de l’application. Cela inclut les scripts de formulaire et les commandes du ruban.Pour plus d'informations :Utiliser jQuery.

Identifier les limitations pour les bibliothèques CDN (Content Delivery Network)

Les bibliothèques CDN JavaScript fournissent de nombreux avantages pour les sites Web publiques. Parce que ces bibliothèques sont hébergées sur Internet, il est inutile de créer des ressources Web contenant le contenu des bibliothèques. Pour Microsoft Dynamics 365, vous devez prendre en compte les éléments suivants avant d’utiliser une bibliothèque CDN JavaScript.

  • Les utilisateurs du client Microsoft Dynamics 365 pour Microsoft Office Outlook avec accès hors connexion ont la possibilité de travailler sans aucune connexion Internet, en mode hors connexion. Si vos bibliothèques JavaScript dépendent de votre connexion Internet, votre code échouera.

  • Certaines organisations peuvent restreindre l’accès Internet à leurs employés. À moins de configurer le réseau pour autoriser l’accès aux sites de bibliothèques CDN, votre code peut échouer pour ces organisations.

L’alternative à utiliser les bibliothèques CDN consiste à créer une ressource Web (JavaScript) de script avec le contenu de la bibliothèque. Comme les ressources Web sont des entités appartenant à l’organisation, elles sont synchronisées lorsqu’un utilisateur Microsoft Dynamics 365 pour Outlook avec accès hors connexion passe en mode hors connexion. Parce que ces ressources Web font désormais partie de l’application, elles ne sont pas bloquées si une organisation limite l’accès à Internet.

Utiliser la détection de fonctionnalités lors de l’écriture de fonctions pour plusieurs navigateurs

Même si vous utilisez une bibliothèque multi-navigateur comme jQuery, vous devez tenir compte des différences entre les navigateurs. Vous pouvez généralement détecter quel navigateur est utilisé lors de l’interrogation de la propriété navigator.useragent. Ce champ est appelé détection de navigateur. Dans la plupart des cas, la détection de navigateur n’est pas la meilleure stratégie car elle ne peut pas prendre en compte la dernière version des fonctionnalités d’un navigateur. Par ailleurs, certains navigateurs offrent la possibilité de modifier la propriété navigation.useragent pour apparaître sous la forme d’un autre navigateur.

La fonctionnalité de détection est la solution recommandée. En détectant les fonctionnalités disponibles, vous pouvez créer des chemins d’accès au code pour les navigateurs compatibles sans savoir exactement quel navigateur est utilisé. Pour plus d’informations sur la détection de fonctionnalités, voir la section relative au mode de détection des fonctionnalités au lieu des navigateurs.

Ne pas accéder aux éléments DOM

Les développeurs JavaScript ont l’habitude d’interagir avec les éléments DOM (Document Object Model) au sein du code. Vous pouvez utiliser la méthode window.getElementById ou la bibliothèque jQuery. Vous êtes libre d’utiliser ces techniques dans vos ressources Web HTML, mais elles ne seront pas prises en charge pour accéder aux éléments des pages d’applications ou des formulaires d’entités Microsoft Dynamics 365. Par contre, l’accès aux éléments de formulaire d’entité sont exposés via le modèle d’objet Xrm.Page. L’équipe de développement Microsoft Dynamics 365 se réserve le droit de modifier le mode de composition des pages, notamment les valeurs ID des éléments, donc l’utilisation du modèle d’objet Xrm.Page protège votre code des modifications d’implémentation des pages. Pour plus d'informations, voir Utiliser le modèle d’objet Xrm.Page.

Définir des noms uniques pour les fonctionnalités JavaScript

Lorsque vous êtes seul(e) à développer une page HTML, vous pouvez aisément gérer les noms des fonctions JavaScript utilisées. Dans Microsoft Dynamics 365, d’autres solutions peuvent ajouter des fonctions JavaScript à la page sur laquelle votre fonction est utilisée.

Si deux fonctions JavaScript d’une page ont le même nom, la première fonction définie est remplacée par la seconde. Pour cette raison, veillez à définir des noms uniques pour vos fonctions JavaScript. Pour plus d'informations, voir Création de bibliothèques de script.

Utiliser des méthodes d’accès aux données asynchrones

Si vous accédez aux données à l’aide des services Web Microsoft Dynamics 365, utilisez toujours une demande XMLHttpRequest configurée pour une exécution asynchrone. La raison est que le navigateur fonctionne sur un thread unique. Si ce thread est en cours d’utilisation pour l’exécution d’un long processus de façon synchrone, le navigateur arrêtera de répondre.

Notes

Les demandes XMLHttpRequests synchrones sont obsolètes sur le thread principal du navigateur en raison de leurs résultats négatifs sur l'expérience de l'utilisateur. Certains navigateurs fournissent maintenant un avertissement lorsque cela est détecté. Si les navigateurs implémentent la spécification à un moment donné à l'avenir, une exception InvalidAccessError sera renvoyée.Pour plus d'informations :http://www.w3.org/TR/XMLHttpRequest/#synchronous-flag et https://xhr.spec.whatwg.org/#the-open()-method

Débogage de JavaScript dans Microsoft Dynamics 365

Chaque navigateur fournit un certain type d'extension de débogage.Internet Explorer fournit les outils de développement nécessaires pour déboguer des scripts dans Microsoft Dynamics 365. Les outils de développement Internet Explorer peuvent être ouverts en appuyant sur F12 lors de la consultation d’une page avec Internet Explorer. Pour plus d'informations, voir Utiliser les outils de développement F12.

Pour Google Chrome, appuyez sur F12 pour ouvrir les outils de développement.Firebug est une extension de navigateur populaire pour le développement Web à l’aide de Mozilla Firefox. Pour Apple Safari, vous devez d'abord sélectionner Développez l’afficher le menu de la barre de menus dans Préférences avancées. Vous pouvez sélectionner Afficher Web Inspector dans le menu Développer.

Vous pouvez également utiliser Microsoft Visual Studio. Pour plus d'informations, voir la section relative au mode de débogage de JScript dans Microsoft Dynamics CRM 2011.

Lorsque vous utilisez les bibliothèques JavaScript dans Microsoft Dynamics 365, les bibliothèques sont chargées avec la page Web. Il peut être parfois difficile d’isoler votre bibliothèque spécifique dans l’environnement de débogage. Lors de l’utilisation des outils de débogage dans Microsoft Edge, sous l’onglet Débogueur, cliquez sur l'icône du dossier située dans le coin supérieur gauche, développez les scripts disponibles et recherchez celui portant le nom qui correspond au nom de votre ressource Web JavaScript, telle que la ressource Web new_myCustomJavaScript.js indiquée ci-dessous. Vous pouvez également rechercher votre bibliothèque JavaScript en tapant le nom de fichier dans la zone rechercher.

Débogage de JavaScript

Les outils de débogage des différents navigateurs ont des fonctionnalités similaires. Une fois que vous avez trouvé votre bibliothèque, vous pouvez définir un point d’arrêt et recréer l’événement qui permet l’exécution de votre code.

Dans le nouveau client de centre de services interactifs (fourni avec Dynamics 365), Dynamics 365 injecte dynamiquement le contenu de votre bibliothèque JavaScript au lieu de le charger avec la page. Cela implique que vous ne pouvez pas définir de points d'arrêt dans votre code personnalisé parce qu'à chaque fois que la page est chargée, votre code est injecté dans l'une des bibliothèques dynamiques, ce qui empêche d'atteindre les points d'arrêt. Dans ce cas, vous devez utiliser d'autres techniques pour déboguer votre code.Pour plus d'informations :Blog: Debugging JavaScript code in CRM using browser developer tools

Écrire des messages sur la console

L’utilisation de la méthode window.alert lors du débogage JavaScript est toujours un moyen courant de résoudre les problèmes liés au code dans l’application. Une fois que tous les navigateurs modernes fournissent un accès rapide aux outils de débogage, ce qui n’est pas la meilleure pratique, surtout lorsque d’autres peuvent utiliser l’application que vous déboguez.

Envisagez plutôt d’écrire vos messages sur la console. Voici une petite fonction que vous pouvez ajouter aux bibliothèques que vous pouvez utiliser pour envoyer des messages à afficher sur la console, lors de son ouverture.

function writeToConsole(message)
{
 if (typeof console != 'undefined') {
  console.log(message);
 }
}

Contrairement à l’utilisation de la méthode d’alerte, si vous oubliez de supprimer du code qui utilise cette fonction, les utilisateurs de l’application ne verront pas vos messages.

Voir aussi

Étendre Microsoft Dynamics 365 sur le client
Utiliser des données Dynamics 365 à l'aide de ressources Web
Étendre Microsoft Dynamics 365 sur le serveur
Écrire du code pour les formulaires Microsoft Dynamics 365
Personnaliser les commandes et le ruban
Ressources Web pour Microsoft Dynamics 365
Se familiariser avec l'API Web (JavaScript côté client) Microsoft Dynamics 365
Utiliser le modèle d’objet Xrm.Page
Blog : Debugging JavaScript code in CRM using browser developer tools

Microsoft Dynamics 365

© 2017 Microsoft. Tous droits réservés. Copyright