Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Lorsque vous développez et déboguez des ressources web JavaScript que vous utilisez en tant que gestionnaire d’événements dans une application pilotée par modèle, vous devez généralement apporter plusieurs modifications et tester leur fonctionnement. Le chargement et la publication de la ressource web après chaque modification ralentit ce processus.
Les outils de développement de navigateur modernes offrent des fonctionnalités permettant d’enregistrer une copie locale de la ressource web. Lorsque l’application pilotée par modèle demande la ressource web, le navigateur charge votre copie locale au lieu du fichier à partir du serveur. Vous pouvez modifier la copie locale, actualiser la page et tester vos modifications sans charger et publier à plusieurs reprises la ressource web. Vous n’avez pas besoin d’installer de logiciels proxy, d’extensions de navigateur ou de certificats.
En savoir plus sur la façon dont les navigateurs modernes fournissent ces fonctionnalités.
- Microsoft Edge remplacements locaux
- Google Chrome substitutions locales
- Remplacements réseau de Firefox
- Remplacements locaux de Safari WebKit Web Inspector
Important
Une substitution locale modifie uniquement la ressource chargée par votre navigateur. Cela ne met pas à jour la ressource web JavaScript dans Microsoft Dataverse, et d'autres utilisateurs ne voient pas vos modifications. Une fois la résolution des problèmes terminé, copiez les modifications que vous souhaitez conserver dans votre fichier source et utilisez votre processus normal pour mettre à jour et publier la ressource web. Cet article ne décrit pas ce processus.
Prerequisites
Avant de commencer :
Vous avez besoin d’une application basée sur un modèle qui dispose d’une ressource web JavaScript utilisée pour fournir des gestionnaires d’événements pour un formulaire.
Cet article utilise la ressource web JavaScript décrite dans Écrire votre premier script client. Cette procédure pas à pas crée une ressource web JavaScript nommée
example_form-script.js, l’ajoute au formulaire Account et inscrit des fonctions pour les événements du formulaire Sur chargement et On Save, ainsi que pour l’événement de la colonne NomOn Change.Note
Vous pouvez télécharger le JavaScriptWebResourceExampleSolution_1_0_managed.zip. Installez cette solution managée et vous trouverez une application pilotée par modèle qui représente le résultat terminé de l’article Écrire votre premier script client.
Cet article utilise les outils de développement de Microsoft Edge, mais Google Chrome, Firefox et les outils de développement de Safari ont des fonctionnalités similaires.
Créez un dossier vide sur votre ordinateur pour Microsoft Edge DevTools afin de stocker les remplacements locaux. N’utilisez pas de dossier qui contient des fichiers sources, des informations d’identification, des certificats ou d’autres informations sensibles. DevTools crée la structure de dossiers dont elle a besoin dans ce dossier. Cet article utilise
C:\temp\overrides, mais vous souhaiterez peut-être utiliserC:\Users\<your user name>\overrides.
Cet article utilise ce script à partir de Write your first client script :
// Define a unique namespace for the sample library.
window.Example ??= {};
(() => {
const notificationId = "_myUniqueId";
const currentUserName = Xrm.Utility.getGlobalContext().userSettings.userName;
const message = `${currentUserName}: Your JavaScript code in action!`;
// Code to run in the form OnLoad event
window.Example.formOnLoad = (executionContext) => {
const formContext = executionContext.getFormContext();
// Display the form level notification as an INFO
formContext.ui.setFormNotification(message, "INFO", notificationId);
// Wait for 5 seconds before clearing the notification
window.setTimeout(
() => formContext.ui.clearFormNotification(notificationId),
5000
);
};
// Code to run in the column OnChange event
window.Example.attributeOnChange = (executionContext) => {
const formContext = executionContext.getFormContext();
// Automatically set some column values if the account name contains "Contoso"
const accountName = formContext.getAttribute("name").getValue();
if (accountName?.toLowerCase().includes("contoso")) {
formContext.getAttribute("websiteurl").setValue("https://www.contoso.com");
formContext.getAttribute("telephone1").setValue("425-555-0100");
formContext.getAttribute("description").setValue("Website URL, Phone and Description set using custom script.");
}
};
// Code to run in the form OnSave event
window.Example.formOnSave = () => {
// Display an alert dialog
Xrm.Navigation.openAlertDialog({ text: "Record saved." });
};
})();
Cette ressource web JavaScript fournit trois fonctions inscrites pour les événements suivants :
| Function | Event |
|---|---|
Example.formOnLoad |
Form OnLoad |
Example.attributeOnChange |
champ OnChange |
Example.formOnSave |
Form OnSave |
Les étapes fonctionnent également avec n’importe quelle ressource web JavaScript inscrite en tant que gestionnaire d’événements de formulaire. Utilisez le nom de votre ressource web et déclenchez son événement lorsque les étapes font référence à l’exemple.
Vérifiez que le script publié fonctionne
Avant de créer un remplacement, confirmez le comportement actuel de la ressource web publiée :
Ouvrez l’application basée sur des modèles dans Microsoft Edge.
Ouvrez une fiche de compte existante ou créez-en une nouvelle.
Vérifiez qu’une notification de formulaire similaire au message suivant s’affiche pendant cinq secondes :
<Your Name>: Your JavaScript code in action!
Cette étape confirme que le formulaire charge la ressource web et appelle le gestionnaire d’événements Example.formOnLoad.
Configurer les surcharges locales
Vous devez uniquement sélectionner un dossier de substitutions la première fois que vous utilisez Local Overrides dans un profil de navigateur Microsoft Edge.
Une fois le formulaire de compte ouvert, appuyez sur F12 ou Ctrl++ pour ouvrir DevTools.
Sélectionnez l’outil Sources .
Dans le volet Navigateur, sélectionnez l’onglet Overrides. Si l’onglet n’est pas visible, sélectionnez Plus d’onglets, puis sélectionnez Overrides.
Sélectionnez Sélectionner un dossier pour les substitutions.
Sélectionnez le dossier vide que vous avez créé pour les substitutions, puis sélectionnez Sélectionner un dossier.
Lorsque DevTools demande un accès complet au dossier, sélectionnez Autoriser.
Vérifiez que l’option Activer les remplacements locaux est sélectionnée.
Activer le contournement du réseau pour les service workers
Important
L’activation du Ignorer pour le réseau garantit que les substitutions locales de DevTools sont appliquées en empêchant les Service Workers de fournir des réponses mises en cache. Si vous ne procédez pas à cette étape, les substitutions locales ne fonctionneront pas avec les applications basées sur des modèles.
Dans DevTools, sélectionnez l’onglet Application .
Si l’onglet n’est pas visible, sélectionnez + (Autres onglets), puis Application.
Dans le volet de navigation gauche, sélectionnez Service Workers.
Sélectionnez Ignorer le réseau pour forcer les requêtes à contourner le Service Worker et à utiliser le réseau à la place.
Actualisez la page pour appliquer la modification.
Créer une substitution pour la ressource web
Utilisez l’outil Network pour rechercher le fichier JavaScript chargé par le formulaire de compte :
Sélectionnez l’outil Réseau .
Si l’activité réseau n’est pas enregistrée, sélectionnez Enregistrer le journal réseau.
Actualisez la page afin que le formulaire charge à nouveau la ressource web.
Dans la zone Filtre , commencez à taper le nom de la ressource web, par exemple :
example_form-script.js.Dans la liste des requêtes réseau, cliquez avec le bouton droit sur
example_form-script.js, puis sélectionnez Remplacer le contenu de substitution.
Sélectionnez l’outil Sources, puis sélectionnez l’onglet Substitutions.
Développez les dossiers créés par DevTools, puis sélectionnez
example_form-script.js.
DevTools copie la ressource web dans le dossier Overrides. Un point violet sur l’icône de fichier indique que DevTools a remplacé la ressource.
Tip
Vous pouvez également créer la dérogation à partir de l’onglet Page dans l’outil Sources. Recherchez la ressource web, cliquez dessus avec le bouton droit, puis sélectionnez Remplacer le contenu.
Vérifiez que Microsoft Edge charge la copie locale
Apportez une modification facile à reconnaître afin que vous puissiez confirmer que la substitution fonctionne :
Dans l’éditeur DevTools, recherchez la ligne suivante :
const message = `${currentUserName}: Your JavaScript code in action!`;Remplacez-la par cette ligne :
const message = `${currentUserName}: Local override in action!`;Note
Si vous essayez de coller du code dans l’éditeur DevTools, vous voyez cette boîte de dialogue. Vous devez taper
allow pastinget sélectionner Autoriser pour continuer. Cette boîte de dialogue n’apparaît pas si vous apportez directement des modifications.
Remplacez la durée de notification de
5000à15000.Appuyez sur Ctrl+S pour enregistrer le fichier local.
Rafraîchissez le formulaire du compte.
Vérifiez que la notification affiche Remplacement local activé ! et reste visible pendant 15 secondes.
Le message et la durée modifiés confirment que Microsoft Edge a chargé le remplacement local au lieu de la ressource web publiée.
Déboguer les gestionnaires d’événements
Après avoir confirmé que la surcharge fonctionne, utilisez le débogueur DevTools pour examiner le script.
Déboguer l’événement OnLoad du formulaire
Dans l’outil Sources, ouvrez le fichier remplacé
example_form-script.js.Sélectionnez le numéro de ligne de cette instruction pour définir un point d’arrêt :
Rafraîchissez le formulaire du compte.
Lorsque l’exécution du script s’interrompt, utilisez le volet Scope pour inspecter
executionContextetformContext.
Parcourez la fonction et observez l’appel à
setFormNotification.Sélectionnez Reprendre l’exécution du script pour continuer.
Déboguer l’événement OnChange nom de compte
Définissez un point d’arrêt dans
Example.attributeOnChangesur cette instruction :const accountName = formContext.getAttribute("name").getValue();Dans le formulaire de compte, modifiez Account Name, puis déplacez le focus hors de la colonne pour déclencher l’événement On Change.
Lorsque l’exécution s’interrompt, inspectez la valeur de
accountName.
Utilisez un nom de compte qui contient
Contosoet parcourez la fonction pour observer comment le script définit les valeurs Site Web, Téléphone principal et Description.
Déboguer l’événement OnSave du formulaire
Définissez un point d’arrêt sur l’instruction
Xrm.Navigation.openAlertDialogdansExample.formOnSave.Enregistrez l’enregistrement.
Lorsque l’exécution s’interrompt, inspectez la pile des appels pour confirmer que l’événement On Save du formulaire a appelé la fonction attendue.
Reprendre l’exécution du script et confirmer que la boîte de dialogue d’alerte s’ouvre.
Vous pouvez modifier et enregistrer la substitution chaque fois que vous souhaitez tester un correctif possible. Actualisez le formulaire pour tester les modifications apportées au code qui s’exécute lorsque le formulaire se charge. Déclenchez l’événement de formulaire ou de colonne approprié pour tester d’autres gestionnaires d’événements. Utilisez l’outil console pour passer en revue les erreurs et la sortie du journal.
Comparer la surcharge avec la ressource web publiée
Pour vérifier si un problème est dû à vos modifications locales :
- Dans l’outil Sources, sélectionnez l’onglet Dérogations.
- Décochez Activer les remplacements locaux.
- Actualisez le formulaire du compte et testez de nouveau l’événement.
Microsoft Edge charge maintenant la ressource web publiée depuis le serveur. Sélectionnez Activer les remplacements locaux et actualisez le formulaire pour reprendre à l’aide de la copie locale.
Terminer le dépannage
Les fichiers de remplacement local ne sont pas connectés à la ressource web dans Dataverse ou aux fichiers sources de votre solution.
- Copiez les modifications que vous souhaitez conserver du fichier de substitution dans le fichier source que vous utilisez pour gérer la ressource web.
- Utilisez votre processus de développement et de déploiement normal pour mettre à jour et publier la ressource web JavaScript.
- Testez la ressource web publiée avec Activer les remplacements locaux désactivé.
- Lorsque vous n’avez plus besoin de la configuration de remplacement, sélectionnez Effacer la configuration sous l’onglet Remplacements .
Caution
Ne traitez pas le fichier dans le dossier des remplacements comme fichier source pour la ressource web. Conservez les modifications que vous souhaitez conserver avant d’effacer la configuration ou de supprimer les fichiers de surcharge locale.
Résoudre les surcharges locales
Voici des problèmes que vous pouvez rencontrer lors de l’utilisation des remplacements locaux.
La ressource web n’apparaît pas dans l’outil Réseau
Vérifiez que l’outil Réseau enregistre, effacez les filtres, puis actualisez le formulaire. Le formulaire doit charger la ressource web avant d’apparaître. Vérifiez également que la bibliothèque JavaScript est ajoutée au formulaire et que les personnalisations de formulaire sont publiées.
La commande Remplacer le contenu d’origine n’est pas disponible
Revenez à l’outil Sources et vérifiez que vous avez sélectionné un dossier de remplacements, autorisé DevTools à y accéder et sélectionné Activer les remplacements locaux. Actualisez ensuite le formulaire et réessayez.
Le formulaire utilise toujours le script publié
Maintenez DevTools ouvert, vérifiez que l’option Activer les remplacements locaux est sélectionnée et vérifiez que la ressource web a un point violet dans l’outil Réseau ou Sources . Enregistrez la dérogation, puis actualisez le formulaire.
Le point d’arrêt n’est pas atteint
Vérifiez que vous avez défini le point d’arrêt dans le fichier redéfini et qu’il apparaît activé. Déclenchez l’événement associé à cette fonction : actualisez le formulaire pour On Load, modifiez la colonne configurée pour On Change ou enregistrez l’enregistrement pour On Save. Vérifiez également l’outil Console pour vérifier la présence d’une erreur de syntaxe qui empêche le chargement du script.