Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Wenn Sie JavaScript-Webressourcen entwickeln und debuggen, die Sie als Ereignishandler in einer modellgesteuerten App verwenden, müssen Sie in der Regel mehrere Änderungen vornehmen und testen, wie sie funktionieren. Das Hochladen und Veröffentlichen der Webressource nach jeder Änderung verlangsamt diesen Vorgang.
Moderne Browserentwicklertools bieten Funktionen zum Speichern einer lokalen Kopie der Webressource. Wenn die modellgesteuerte App die Webressource anfordert, lädt der Browser ihre lokale Kopie anstelle der Datei vom Server. Sie können die lokale Kopie bearbeiten, die Seite aktualisieren und Ihre Änderungen testen, ohne die Webressource wiederholt hochzuladen und zu veröffentlichen. Sie müssen keine Proxysoftware, Browsererweiterungen oder Zertifikate installieren.
Erfahren Sie mehr darüber, wie moderne Browser diese Funktionen bereitstellen.
- Microsoft Edge Local Overrides
- Google Chrome lokale Überschreibungen
- Netzwerküberschreibungen in Firefox
- Safari WebKit Web Inspector Lokale Überschreibungen
Important
Eine lokale Überschreibung ändert nur die vom Browser geladene Ressource. Die JavaScript-Webressource wird in Microsoft Dataverse nicht aktualisiert, und andere Benutzer sehen Ihre Änderungen nicht. Nachdem Sie die Problembehandlung abgeschlossen haben, kopieren Sie die Änderungen, die Sie in Die Quelldatei behalten möchten, und verwenden Sie ihren normalen Prozess, um die Webressource zu aktualisieren und zu veröffentlichen. Dieser Artikel beschreibt diesen Prozess nicht.
Prerequisites
Bevor Sie beginnen:
Sie benötigen eine modellgesteuerte App mit einer JavaScript-Webressource, die zum Bereitstellen von Ereignishandlern für ein Formular verwendet wird.
In diesem Artikel wird die JavaScript-Webressource verwendet, die in Schreiben Sie Ihr erstes Clientskript beschrieben wird. Diese exemplarische Vorgehensweise erstellt eine JavaScript-Webressource mit dem Namen
example_form-script.js, fügt sie dem Account-Formular hinzu und registriert Funktionen für die Formularereignisse On Load und On Save sowie für die Spalte Name und das Ereignis On Change.Note
Sie können die JavaScriptWebResourceExampleSolution_1_0_managed.zipherunterladen. Installieren Sie diese verwaltete Lösung, und Sie finden eine modellgesteuerte Anwendung, die das vollständige Ergebnis des Artikels „Schreiben Ihres ersten Clientskripts exemplarische Vorgehensweise“ darstellt.
In diesem Artikel wird Microsoft Edge verwendet, aber Google Chrome, Firefox und Safari-Entwicklertools verfügen über ähnliche Funktionen.
Erstellen Sie einen leeren Ordner auf Ihrem Computer für Microsoft Edge DevTools, um lokale Überschreibungen zu speichern. Verwenden Sie keinen Ordner, der Quelldateien, Anmeldeinformationen, Zertifikate oder andere vertrauliche Informationen enthält. DevTools erstellt die Ordnerstruktur, die von DevTools in diesem Ordner benötigt wird. In diesem Artikel wird
C:\temp\overridesverwendet, Sie sollten aber eventuellC:\Users\<your user name>\overridesverwenden.
In diesem Artikel wird dieses Skript aus Ihr erstes Clientskript schreiben verwendet:
// 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." });
};
})();
Diese JavaScript-Webressource stellt drei Funktionen bereit, die für die folgenden Ereignisse registriert sind:
| Function | Event |
|---|---|
Example.formOnLoad |
Form OnLoad |
Example.attributeOnChange |
Feld OnChange |
Example.formOnSave |
Formular OnSave |
Die Schritte funktionieren auch mit jeder JavaScript-Webressource, die als Formularereignishandler registriert ist. Verwenden Sie den Namen Ihrer Webressource, und lösen Sie deren Ereignis aus, wenn sich die Schritte auf das Beispiel beziehen.
Vergewissern Sie sich, dass das veröffentlichte Skript funktioniert
Bevor Sie eine Überschreibung erstellen, bestätigen Sie das aktuelle Verhalten der veröffentlichten Webressource:
Öffnen Sie die modellgesteuerte App in Microsoft Edge.
Öffnen Sie einen vorhandenen Kontodatensatz, oder erstellen Sie einen neuen Datensatz.
Vergewissern Sie sich, dass eine Formularbenachrichtigung, die der folgenden Meldung ähnelt, fünf Sekunden lang angezeigt wird:
<Your Name>: Your JavaScript code in action!
In diesem Schritt wird bestätigt, dass das Formular die Webressource lädt und den Example.formOnLoad Ereignishandler aufruft.
Lokale Überschreibungen einrichten
Sie müssen nur beim ersten Verwenden von Local Overrides in einem Microsoft Edge-Browserprofil einen Überschreibungsordner auswählen.
Wenn das Kontoformular geöffnet ist, drücken Sie F12 oder STRG+UMSCHALT+I , um DevTools zu öffnen.
Wählen Sie das Tool Quellen aus.
Wählen Sie im Navigatorbereich die Registerkarte "Overrides" aus. Wenn die Registerkarte nicht angezeigt wird, wählen Sie "More tabs" und dann "Overrides" aus.
Wählen Sie "Ordner für Überschreibungen auswählen" aus.
Wählen Sie den leeren Ordner aus, den Sie für Überschreibungen erstellt haben, und wählen Sie dann Ordner auswählen aus.
Wenn DevTools vollzugriff auf den Ordner anfordert, wählen Sie "Zulassen" aus.
Vergewissern Sie sich, dass Lokale Überschreibungen aktivieren ausgewählt ist.
Umgehung für Netzwerk für Service Worker aktivieren
Important
Durch Aktivieren von Netzwerk umgehen wird sichergestellt, dass Lokale Überschreibungen in DevTools angewendet werden, indem Service Worker daran gehindert werden, zwischengespeicherte Antworten bereitzustellen. Wenn Sie diesen Schritt nicht ausführen, funktionieren lokale Überschreibungen nicht mit modellgesteuerten Apps.
Wählen Sie in DevTools die Registerkarte Anwendung aus.
Wenn die Registerkarte nicht angezeigt wird, wählen Sie + (weitere Registerkarten) und dann Application aus.
Wählen Sie im linken Navigationsbereich "Service Worker" aus.
Wählen Sie Netzwerk umgehen aus, um Anforderungen zum Umgehen des Service Workers zu erzwingen und stattdessen das Netzwerk zu verwenden.
Aktualisieren Sie die Seite, um die Änderung anzuwenden.
Überschreibung für die Webressource erstellen
Verwenden Sie das Network-Tool, um die JavaScript-Datei zu finden, die das Kontoformular lädt:
Wählen Sie das Netzwerktool aus.
Wenn keine Netzwerkaktivität aufgezeichnet wird, wählen Sie Netzwerkprotokoll aufzeichnen.
Aktualisieren Sie die Seite so, dass das Formular die Webressource erneut lädt.
Beginnen Sie im Filter-Feld mit der Eingabe des Namens der Webressource, z. B.:
example_form-script.js.Klicken Sie in der Liste der Netzwerkanforderungen auf
example_form-script.jsmit der rechten Maustaste, und wählen Sie dann Inhalt überschreiben.
Wählen Sie das Tool „Quellen“ und dann die Registerkarte „Überschreibungen“ aus.
Erweitern Sie die von DevTools erstellten Ordner, und wählen Sie dann
example_form-script.jsaus.
DevTools kopiert die Webressource in den Überschreibungsordner. Ein violetter Punkt auf dem Dateisymbol gibt an, dass DevTools die Ressource überschrieben hat.
Tip
Sie können das Override auch über die Registerkarte Seite im Tool „Quellen“ erstellen. Suchen Sie die Webressource, klicken Sie mit der rechten Maustaste darauf, und wählen Sie dann Inhalt überschreiben.
Überprüfen, ob Microsoft Edge die lokale Kopie lädt
Nehmen Sie eine leicht zu erkennende Änderung vor, damit Sie bestätigen können, dass die Überschreibung funktioniert:
Suchen Sie im DevTools-Editor die folgende Zeile:
const message = `${currentUserName}: Your JavaScript code in action!`;Ersetzen Sie es durch diese Zeile:
const message = `${currentUserName}: Local override in action!`;Note
Wenn Sie versuchen, Code in den DevTools-Editor einzufügen, wird dieses Dialogfeld angezeigt. Sie müssen eingeben und
allow pastingauswählen, um den Vorgang fortzusetzen. Dieses Dialogfeld wird nicht angezeigt, wenn Sie Änderungen direkt eingeben.
Ändern Sie die Benachrichtigungsdauer von
5000zu15000.Drücken Sie STRG+S , um die lokale Datei zu speichern.
Aktualisieren Sie das Kontoformular.
Vergewissern Sie sich, dass in der Benachrichtigung Local override in action! angezeigt wird. Sie bleibt 15 Sekunden lang sichtbar.
Die geänderte Nachricht und Dauer bestätigen, dass Microsoft Edge die lokale Außerkraftsetzung anstelle der veröffentlichten Webressource geladen hat.
Debuggen der Ereignishandler
Nachdem Sie bestätigt haben, dass das Override funktioniert, verwenden Sie den DevTools-Debugger, um das Skript zu untersuchen.
Das OnLoad-Ereignis des Formulars debuggen
Öffnen Sie im Tool "Quellen " die überschriebene
example_form-script.jsDatei.Wählen Sie die Zeilennummer für diese Anweisung aus, um einen Haltepunkt festzulegen:
Aktualisieren Sie das Kontoformular.
Wenn die Skriptausführung angehalten wird, verwenden Sie den Bereich, um
executionContextundformContextzu prüfen.
Durchlaufen Sie die Funktion, und beobachten Sie den Aufruf von
setFormNotification.Wählen Sie „Skriptausführung fortsetzen“ aus, um fortzufahren.
Debuggen des OnChange-Ereignisses für den Kontonamen
Legen Sie für diese Anweisung in
Example.attributeOnChangeeinen Haltepunkt fest:const accountName = formContext.getAttribute("name").getValue();Ändern Sie im Kontoformular den Kontonamen, und verschieben Sie dann den Fokus von der Spalte, um das On Change-Ereignis auszulösen.
Wenn die Ausführung angehalten wird, prüfen Sie den Wert von
accountName.
Verwenden Sie einen Kontonamen, der
Contosoenthält. Durchlaufen Sie dann die Funktion, um zu beobachten, wie das Skript die Werte „Website“, „Haupttelefon“ und „Beschreibung“ festlegt.
Debuggen des OnSave-Ereignisses des Formulars
Legen Sie einen Haltepunkt auf der
Xrm.Navigation.openAlertDialog-Anweisung inExample.formOnSavefest.Speichern Sie den Datensatz.
Wenn die Ausführung angehalten wird, überprüfen Sie den Aufrufstapel, um zu bestätigen, dass das Formular On Save-Ereignis die erwartete Funktion aufgerufen hat.
Setzen Sie die Skriptausführung fort und bestätigen Sie, dass sich der Warndialog öffnet.
Sie können die Überschreibung jederzeit bearbeiten und speichern, wenn Sie eine mögliche Korrektur testen möchten. Aktualisieren Sie das Formular, um Änderungen an Code zu testen, der beim Laden des Formulars ausgeführt wird. Lösen Sie das relevante Formular- oder Spaltenereignis aus, um andere Ereignishandler zu testen. Verwenden Sie das Console-Tool, um Fehler zu überprüfen und die Ausgabe zu protokollieren.
Vergleichen Sie den Override mit der veröffentlichten Webressource
So überprüfen Sie, ob ein Problem durch Ihre lokalen Änderungen verursacht wird:
- Wählen Sie im Tool „Quellen“ die Registerkarte „Überschreibungen“ aus.
- Deaktivieren Sie "Lokale Überschreibungen aktivieren".
- Aktualisieren Sie das Kontoformular, und testen Sie das Event erneut.
Microsoft Edge lädt jetzt die veröffentlichte Webressource vom Server. Wählen Sie „Lokale Überschreibungen aktivieren“ aus, und aktualisieren Sie das Formular, um die Verwendung der lokalen Kopie fortzusetzen.
Problembehandlung abschließen
Lokale Override-Dateien sind nicht mit der Webressource in Dataverse oder mit den Quelldateien für Ihre Lösung verbunden.
- Kopieren Sie die Änderungen, die Sie beibehalten möchten, aus der Überschreibungsdatei in die Quelldatei, die Sie zum Verwalten der Webressource verwenden.
- Verwenden Sie Ihren normalen Entwicklungs- und Bereitstellungsprozess, um die JavaScript-Webressource zu aktualisieren und zu veröffentlichen.
- Testen Sie die veröffentlichte Webressource mit deaktiviertem "Enable Local Overrides".
- Wenn Sie die Außerkraftsetzungskonfiguration nicht mehr benötigen, wählen Sie auf der Registerkarte "Außerkraftsetzungen" die Option "Konfiguration löschen" aus.
Achtung
Behandeln Sie die Datei im Ordner „Overrides“ nicht als Quelldatei für die Webressource. Bewahren Sie alle Änderungen auf, die Sie beibehalten möchten, bevor Sie die Konfiguration löschen oder lokale Override-Dateien löschen.
Lokale Überschreibungen beheben
Im Folgenden finden Sie Probleme, die bei der Verwendung von lokalen Overrides auftreten können.
Die Webressource wird im Netzwerktool nicht angezeigt.
Vergewissern Sie sich, dass das Netzwerktool aufzeichnet, löschen Sie alle Filter und aktualisieren Sie das Formular. Das Formular muss die Webressource laden, bevor sie angezeigt wird. Vergewissern Sie sich außerdem, dass die JavaScript-Bibliothek dem Formular hinzugefügt wurde und dass die Formularanpassungen veröffentlicht wurden.
Der Befehl "Inhalt außer Kraft setzen" ist nicht verfügbar.
Kehren Sie zum Tool Sources zurück, und vergewissern Sie sich, dass Sie einen Overrides-Ordner ausgewählt, DevTools den Zugriff darauf erlaubt und Lokale Overrides aktivieren ausgewählt haben. Aktualisieren Sie dann das Formular, und versuchen Sie es erneut.
Das Formular verwendet weiterhin das veröffentlichte Skript.
Lassen Sie DevTools geöffnet, vergewissern Sie sich, dass Enable Local Overrides ausgewählt ist, und überprüfen Sie, ob die Webressource im Tool Network oder Sources einen violetten Punkt aufweist. Speichern Sie die Überschreibung, und aktualisieren Sie dann das Formular.
Ein Breakpoint wurde nicht erreicht.
Vergewissern Sie sich, dass Sie den Haltepunkt in der Datei mit der Überschreibung festlegen und dass er als aktiviert angezeigt wird. Lösen Sie das Ereignis aus, das dieser Funktion zugeordnet ist: Aktualisieren Sie das Formular für On Load, ändern Sie die konfigurierte Spalte für On Change oder speichern Sie den Datensatz für On Save. Überprüfen Sie außerdem das Console-Tool auf einen Syntaxfehler, der verhindert, dass das Skript geladen wird.