Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Al desarrollar y depurar recursos web de JavaScript que se usan como controlador de eventos en una aplicación controlada por modelos, normalmente es necesario realizar varios cambios y probar cómo funcionan. La carga y publicación del recurso web después de cada cambio ralentiza este proceso.
Las herramientas modernas para desarrolladores del explorador proporcionan funcionalidades para guardar una copia local del recurso web. Cuando la aplicación basada en modelos solicita el recurso web, el explorador carga tu copia local en lugar del archivo desde el servidor. Puede editar la copia local, actualizar la página y probar los cambios sin cargar y publicar repetidamente el recurso web. No es necesario instalar software proxy, extensiones de explorador ni certificados.
Obtenga más información sobre cómo los exploradores modernos proporcionan estas funcionalidades.
- Microsoft Edge Local Overrides
- Google Chrome invalidaciones locales
- Firefox Anulaciones de red
- Sobrescrituras locales de Safari WebKit Web Inspector
Important
Una anulación local solo cambia el recurso cargado por el explorador. No actualiza el recurso web de JavaScript en Microsoft Dataverse y otros usuarios no ven los cambios. Después de finalizar la solución de problemas, copie los cambios que desea mantener en el archivo de origen y use el proceso normal para actualizar y publicar el recurso web. En este artículo no se describe ese proceso.
Prerequisites
Antes de empezar:
Necesita una aplicación basada en modelos que tenga un recurso web de JavaScript que se use para proporcionar controladores de eventos para un formulario.
En este artículo se usa el recurso web de JavaScript descrito en Escritura del primer script de cliente. Ese tutorial crea un recurso web de JavaScript denominado
example_form-script.js, lo agrega al formulario Account y registra funciones para los eventos On Load y On Save del formulario y el evento On Change de la columna Name.Note
Puede descargar el JavaScriptWebResourceExampleSolution_1_0_managed.zip. Instale esta solución administrada y encontrará una aplicación basada en modelos que represente el resultado completo del artículo Escritura del primer script de cliente.
En este artículo se usan Microsoft Edge, pero las herramientas de desarrollo de Google Chrome, Firefox y Safari tienen funcionalidades similares.
Cree una carpeta vacía en el equipo para que Microsoft Edge DevTools almacene sobrescrituras locales. No use una carpeta que contenga archivos de origen, credenciales, certificados u otra información confidencial. DevTools crea la estructura de carpetas que necesita dentro de esta carpeta. En este artículo se usa
C:\temp\overrides, pero es posible que quiera usarC:\Users\<your user name>\overrides.
En este artículo se usa este script de Escribe tu primer script de cliente:
// 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." });
};
})();
Este recurso web de JavaScript proporciona tres funciones registradas para los siguientes eventos:
| Function | Event |
|---|---|
Example.formOnLoad |
Form OnLoad |
Example.attributeOnChange |
campo OnChange |
Example.formOnSave |
Formulario OnSave |
Los pasos también funcionan con cualquier recurso web de JavaScript registrado como controlador de eventos de formulario. Utilice el nombre del recurso web y desencadene su evento cuando los pasos hagan referencia al ejemplo.
Confirma que el script publicado funciona
Antes de crear una anulación, confirme el comportamiento actual del recurso web publicado:
Abra la aplicación basada en modelos en Microsoft Edge.
Abra un registro de cuenta existente o cree uno nuevo.
Confirme que aparece una notificación de formulario similar al siguiente mensaje durante cinco segundos:
<Your Name>: Your JavaScript code in action!
Este paso confirma que el formulario carga el recurso web y llama al controlador del evento Example.formOnLoad.
Configurar anulaciones locales
Solo tiene que seleccionar una carpeta de Overrides la primera vez que use Overrides locales en un perfil del navegador Microsoft Edge.
Con el formulario de cuenta abierto, presione F12 o Ctrl+Mayús+I para abrir DevTools.
Seleccione la herramienta Sources.
En el panel Navegador, seleccione la pestaña Sustituciones. Si la pestaña no está visible, seleccione Más pestañas y, a continuación, seleccione Sustituciones.
Seleccione Seleccionar carpeta para anulaciones.
Seleccione la carpeta vacía que creó para anulaciones y, a continuación, seleccione Seleccionar carpeta.
Cuando DevTools solicita acceso completo a la carpeta, seleccione Permitir.
Confirme que Habilitar invalidaciones locales esté seleccionado.
Habilitar bypass de red para service workers
Important
Habilitar Bypass for network garantiza que las invalidaciones locales de DevTools se aplican evitando que los Service Workers atiendan respuestas almacenadas en caché. Si no realiza este paso, las anulaciones locales no funcionarán con aplicaciones basadas en modelos.
En DevTools, seleccione la pestaña Application.
Si la pestaña no está visible, seleccione + (Más pestañas) y, a continuación, Aplicación.
En el panel de navegación izquierdo, seleccione Service Workers.
Seleccione Omitir para la red para obligar a las solicitudes a omitir el Service Worker y usar la red en su lugar.
Actualice la página para aplicar el cambio.
Creación de una anulación para el recurso web
Use la herramienta Red para encontrar el archivo JavaScript cargado por el formulario de cuenta:
Seleccione la herramienta Red .
Si la actividad de red no se está grabando, seleccione Registrar el registro de red.
Actualice la página para que el formulario cargue de nuevo el recurso web.
En el cuadro Filtro , empiece a escribir el nombre del recurso web, como:
example_form-script.js.En la lista de solicitudes de red, haga clic con el botón derecho en
example_form-script.jsy, a continuación, seleccione Reemplazar contenido.
Seleccione la herramienta Orígenes y, a continuación, seleccione la pestaña Sobrescrituras.
Expanda las carpetas creadas por DevTools y, a continuación, seleccione
example_form-script.js.
DevTools copia el recurso web en la carpeta overrides. Un punto púrpura en el icono de archivo indica que DevTools ha sobrescrito el recurso.
Tip
También puede crear la anulación desde la pestaña Página de la herramienta Fuentes. Busque el recurso web, haga clic con el botón derecho en él y seleccione Sobrescribir contenido.
Compruebe que Microsoft Edge carga la copia local
Realice un cambio fácil de reconocer para que pueda confirmar que la anulación funciona:
En el editor de DevTools, busque la siguiente línea:
const message = `${currentUserName}: Your JavaScript code in action!`;Reemplácela por esta línea:
const message = `${currentUserName}: Local override in action!`;Note
Si intenta pegar código en el editor de DevTools, verá este cuadro de diálogo. Debe escribir
allow pastingy seleccionar Permitir para continuar. Este cuadro de diálogo no aparece si escribe cambios directamente.
Cambie la duración de la notificación de
5000a15000.Presione Ctrl+S para guardar el archivo local.
Actualizar el formulario de cuenta.
Confirme que la notificación muestra ¡Anulación local en curso! y permanece visible durante 15 segundos.
El mensaje y la duración modificados confirman que Microsoft Edge cargó la anulación local en lugar del recurso web publicado.
Depura los controladores de eventos
Después de confirmar que la anulación funciona, use el depurador DevTools para investigar el script.
Depurar el evento OnLoad del formulario
En la herramienta Sources, abra el archivo sobrescrito
example_form-script.js.Seleccione el número de línea de esta instrucción para establecer un punto de interrupción:
Actualizar el formulario de cuenta.
Cuando la ejecución del script se pausa, use el panel Scope para inspeccionar
executionContextyformContext.
Recorra la función y observe la llamada a
setFormNotification.Seleccione Reanudar ejecución de script para continuar.
Depurar el evento OnChange de Nombre de cuenta
Establezca un punto de interrupción en esta instrucción
Example.attributeOnChange:const accountName = formContext.getAttribute("name").getValue();En el formulario de cuenta, cambie Nombre de cuenta y, a continuación, mueva el foco fuera de la columna para desencadenar el evento On Change.
Cuando la ejecución se detiene, inspeccione el valor de
accountName.
Use un nombre de cuenta que contenga
Contosoy recorra la función para observar cómo establece el script los valores de sitio web, teléfono principal y descripción.
Depurar el evento OnSave del formulario
Establezca un punto de interrupción en la instrucción
Xrm.Navigation.openAlertDialogenExample.formOnSave.Guardar el registro.
Cuando la ejecución se detiene, inspeccione la pila de llamadas para confirmar que el evento On Save del formulario llamó a la función esperada.
Reanude la ejecución del script y confirme que se abre el cuadro de diálogo de alerta.
Puede editar y guardar la anulación siempre que quiera probar una posible corrección. Actualice el formulario para probar los cambios en el código que se ejecuta cuando se carga el formulario. Active el evento del formulario o de la columna pertinente para probar otros controladores de eventos. Use la herramienta Console para revisar los errores y la salida del registro.
Compare la sobrescritura con el recurso web publicado
Para confirmar si un problema se debe a los cambios locales:
- En la herramienta Sources, seleccione la pestaña Overrides.
- Desmarque las invalidaciones locales.
- Actualice el formulario de cuenta y vuelva a probar el evento.
Microsoft Edge ahora carga el recurso web publicado desde el servidor. Seleccione Activar anulaciones locales y actualice el formulario para reanudar con la copia local.
Finalizar la resolución de problemas
Los archivos de anulación local no están conectados al recurso web en Dataverse ni a los archivos de origen de la solución.
- Copie los cambios que desea mantener del archivo de reemplazo en el archivo de origen que use para mantener el recurso web.
- Use el proceso de desarrollo e implementación normales para actualizar y publicar el recurso web de JavaScript.
- Pruebe el recurso web publicado con Habilitar reemplazos locales desactivado.
- Cuando ya no necesite la configuración de anulación, seleccione Borrar configuración en la pestaña Anulaciones.
Caution
No trate el archivo en la carpeta overrides como el archivo de origen del recurso web. Conserve los cambios que desee conservar antes de borrar la configuración o eliminar los archivos de sobrescritura local.
Solucionar problemas de anulaciones locales
A continuación se muestran los problemas que pueden surgir al usar invalidaciones locales.
El recurso web no aparece en la herramienta Red
Confirme que la herramienta de red está grabando, borre los filtros y actualice el formulario. El formulario debe cargar el recurso web antes de que aparezca. Confirme también que la biblioteca de JavaScript se agrega al formulario y que se publican las personalizaciones del formulario.
El comando Sobrescribir contenido no está disponible
Vuelva a la herramienta Sources y confirme que seleccionó una carpeta de overrides, permitió que DevTools acceda a ella y seleccionó Enable Local Overrides. A continuación, actualice el formulario e inténtelo de nuevo.
El formulario sigue usando el script publicado.
Mantenga abierto DevTools, confirme que Enable Local Overrides está seleccionado y compruebe que el recurso web tiene un punto púrpura en la herramienta Red o Orígenes. Guarde la anulación y actualice el formulario.
No se alcanza un punto de interrupción
Confirme que ha establecido el punto de interrupción en el archivo sobrescrito y que aparece habilitado. Desencadene el evento asociado a esa función: actualice el formulario para Al cargar, cambie la columna configurada para Al cambiar o guarde el registro en Al guardar. Compruebe también la herramienta Consola en busca de un error de sintaxis que impida que el script se cargue.