Uso de JavaScript con Microsoft Dynamics 365

 

Publicado: enero de 2017

Se aplica a: Dynamics 365 (online), Dynamics 365 (on-premises), Dynamics CRM 2016, Dynamics CRM Online

Microsoft Dynamics 365 (en línea y local) proporciona muchas oportunidades para usar JavaScript. Todo el JavaScript usado en Microsoft Dynamics 365 se agrega al crear recursos web de JavaScript . Este tema tiene información para desarrolladores que usan JavaScript e incluye vínculos a los temas correspondientes en SDK de Microsoft Dynamics 365 y otros orígenes.

En este tema

Áreas en las que puede usar JavaScript en Microsoft Dynamics 365

Uso de jQuery

Escribir JavaScript para varios exploradores

Prácticas recomendadas de programación JavaScript

Depurar JavaScript en Microsoft Dynamics 365

Áreas en las que puede usar JavaScript en Microsoft Dynamics 365

Puede usar JavaScript para realizar acciones en scripts de formularios, comandos de la barra de comandos (cinta de opciones) y recursos web.

Scripts de formularios

El uso más común de JavaScript en Microsoft Dynamics 365 es agregar funciones como controladores de eventos para eventos de formulario de entidad. Para obtener más información, vea Escriba código para formularios de Microsoft Dynamics 365.

Comandos de la barra de comandos (cinta de opciones)

Al personalizar la barra de comandos para Microsoft Dynamics 365 , puede configurar los comandos de los controles que desea agregar. Estos comandos contienen las reglas que controlan si el control se activará y qué acción se realizará cuando se use el control. Para obtener más información, vea Personalizar los comandos y la cinta de opciones.

Recursos web

Microsoft Dynamics 365 proporciona una entidad perteneciente a organizaciones que almacena una representación binaria de un archivo al que se puede tener acceso mediante una dirección URL Este archivo se denomina un recurso web. Hay varios tipos de recursos web. Un recurso web que representa una biblioteca de JavaScript se denomina un recurso web de JavaScript. Puede usar un recurso web de página web (HTML) para proporcionar una interfaz de usuario a bibliotecas de JavaScript incluidas del mismo modo que haría con archivos en un servidor web. Dado que estos archivos forman parte de Microsoft Dynamics 365, los usuarios que acceden a estos ya están autenticados. Por tanto, puede usar los servicios web de Microsoft Dynamics 365 sin necesidad de escribir código para autenticar el usuario. Para obtener más información, vea Recursos web para Microsoft Dynamics 365 y Trabajar con datos de Dynamics 365 utilizando recursos web.

Uso de jQuery

  • Usar jQuery con recursos web HTML
    Se recomienda usar jQuery junto con recursos web HTML para proporcionar interfaces de usuario porque es una biblioteca excelente entre exploradores.

    Con recursos web HTML, controla las bibliotecas que están presentes y no hay ninguna restricción frente a la manipulación del DOM. No dude en usar jQuery en los recursos web HTML.

  • Evitar el uso de jQuery con scripts de formularios o comandos de la cinta de opciones
    No se recomienda el uso de jQuery en scripts de formularios y comandos de cinta.

    La mayoría de las ventajas que proporciona jQuery es que permite la manipulación sencilla entre exploradores del DOM. Esto no se admite de manera explícita dentro de los scripts de formularios y comandos de la cinta de opciones. Limite los scripts para usar las bibliotecas Xrm.Page y Xrm.Utility disponibles en scripts de formularios y comandos de la cinta de opciones. Si decide usar las funcionalidades restantes de jQuery que son útiles con Microsoft Dynamics 365 e incluir la capacidad de usar $.ajax, tenga en cuenta lo siguiente:

    • Para el máximo rendimiento, no cargue jQuery en la página si no lo necesita

    • Se admite el uso de $.ajax para realizar solicitudes a los servicios web de Microsoft Dynamics 365, aunque hay alternativas. La alternativa al uso de $.ajax es usar el objeto XMLHttpRequest de los exploradores directamente. El método $.ajax de jQuery sólo es un contenedor para este objeto. Si usa el objeto XMLHttpRequest nativo directamente, no necesita cargar jQuery.

    • Cada versión de jQuery que se carga en una página puede ser una versión diferente. Diferentes versiones de jQuery tienen distintos comportamientos y estos pueden causar problemas cuando se cargue varias versiones de jQuery en la misma página. Hay una técnica para mitigar esto, pero depende de editar la biblioteca jQuery y cualquier otra biblioteca que dependa de jQuery.Más información:UI de jQuery y jQuery UI con Dynamics CRM 2011 y 2013, jQuery.noConflict()

      Nota

      Después de Actualización 1 de Microsoft Dynamics CRM Online 2015, los scripts de formularios se ejecutan en un ámbito distinto de la instancia de jQuery usada por la aplicación. Esto significa que puede que no haya una instancia de jQuery disponible cuando el código trate de usar jQuery.noConflict. Si debe usar jQuery, primero debe detectar si existe una instancia de jQuery antes de intentar usar jQuery.noConflict.

Escribir JavaScript para varios exploradores

Dado que no sabe qué explorador se usará, debe asegurarse de que los scripts que use funcionarán con todos los exploradores admitidos. La mayoría de las diferencias importantes entre Internet Explorer y otro explorador tienen que ver con la manipulación de DOM XML y HTML. Debido a que no se admite la manipulación de DOM HTML, si la lógica de script solo realiza acciones compatibles y usa la API de Xrm.Page, los cambios necesarios para admitir otros exploradores podrían ser pequeños. Use la herramienta de validación de código personalizado para identificar código que funcione únicamente para Internet Explorer.

Una biblioteca entre exploradores como jQuery es una buena solución para desarrollar recursos web pero no debería ser necesaria para scripts de formularios o comandos de la cinta de opciones.Más información:Uso de jQuery

Compatibilidad con otros exploradores

Dado que Microsoft Dynamics 365 (en línea y local)admite estándares W3C, la aplicación podrá ser accesible mediante cualquier explorador moderno y desde cualquier plataforma que admita dichos estándares. Sin embargo, Microsoft Dynamics 365 solo se probará con un conjunto específico de exploradores y plataformas. Para obtener la lista de exploradores y plataformas admitidas, vea TechNet: Exploradores web admitidos.

Si usa un explorador, o una versión de explorador, que no se admite y escribe únicamente el nombre del servidor o el nombre del servidor con la organización como URL, se le redirigirá a la página de Microsoft Dynamics 365 para teléfonos. Se puede esperar que las páginas de Dynamics 365 para teléfonos funcionen correctamente en la mayoría de los exploradores, como los exploradores usados en dispositivos móviles, con funcionalidad limitada.

Prácticas recomendadas de programación JavaScript

En las siguientes secciones se describen las prácticas recomendadas cuando se usa JavaScript con Microsoft Dynamics 365.

Evitar usar métodos incompatibles

En Internet, puede encontrar muchos ejemplos o sugerencias que describen el uso de métodos incompatibles. Pueden incluir el aprovechamiento de función interna no documentada para controles de página. Estos métodos pueden funcionar pero, al no estar admitidos, no puede esperar que continuarán funcionando en versiones futuras de Microsoft Dynamics 365.

Use la herramienta de validación de código personalizado para identificar código que use códigos incompatibles.

Usar una biblioteca de JavaScript entre exploradores para las interfaces de usuario de recursos web HTML

Una biblioteca JavaScript de distintos exploradores, como jQuery, ofrece muchas ventajas al desarrollar recursos web de HTML que deben que deben ser compatibles con varios exploradores. Las bibliotecas de JavaScript como jQuery proporcionan una experiencia de desarrollo unificada para todos los exploradores compatibles con Microsoft Dynamics 365. Estas capacidades son adecuados al usar recursos web HTML para proporcionar interfaces de usuario. Las bibliotecas JavaScript como jQuery ofrecen formas coherentes para interactuar con el Document Object Model (DOM).

No use jQuery para comandos o script de formularios

No se recomienda ni es compatible el uso de jQuery para ninguna página dentro de la aplicación. Esto incluye scripts de formularios y comandos de la cinta de opciones.Más información:Uso de jQuery.

Reconocer las limitaciones de las bibliotecas de la red de entrega de contenido (CDN)

Las bibliotecas de la red de entrega de contenido (CDN) de JavaScript proporcionan muchas ventajas para sitios web públicos. Debido a que estas bibliotecas se hospedan en Internet, no es necesario crear recursos web que contengan el contenido de las bibliotecas. Para Microsoft Dynamics 365, deben tenerse en cuenta los siguientes problemas antes de usar una biblioteca JavaScript de CDN.

  • Los usuarios del cliente de Microsoft Dynamics 365 para Microsoft Office Outlook con acceso sin conexión tienen la capacidad de trabajar sin conexión a Internet mientras trabajan sin conexión. Si depende de una conexión a Internet para las bibliotecas JavaScript, su código generará un error.

  • Algunas organizaciones restringirán el acceso a Internet para empleados. A menos que configuren la red para permitir el acceso a los sitios de biblioteca CDN, se puede producir un error en su código para esas organizaciones.

La alternativa al uso de las bibliotecas CDN es crear un recurso web de script (JavaScriptcon el contenido de la biblioteca. Dado que los recursos web son entidades propiedad de la organización, se sincronizarán cuando un usuario de Microsoft Dynamics 365 para Outlook con acceso sin conexión se desconecte. Puesto que estos recursos web forman parte ahora de la aplicación, no se bloquearán si una organización restringe el acceso a Internet.

Usar la detección de características al escribir funciones para varios exploradores

Incluso cuando usa una biblioteca entre exploradores como jQuery, debe ser muy consciente de las diferencias entre exploradores. Generalmente puede detectar qué explorador se están usando consultando la propiedad navigator.useragent. Esto se denomina detección del explorador. La detección del explorador no es una buena estrategia en la mayoría de los casos porque no puede tener en cuenta qué características tienen las versiones más recientes de un explorador. Además, algunos exploradores ofrecen la capacidad de modificar la propiedad navigation.useragent para que parezcan ser un explorador diferente.

La detección de características es el enfoque recomendado. Al detectar qué características están disponibles, puede crear rutas de código para los exploradores que admite sin saber exactamente qué explorador se está usando. Para obtener más información acerca de la detección de características, vea Cómo detectar características en lugar de exploradores.

No acceda al DOM

Los desarrolladores deJavaScript se usan para interactuar con los elementos del Document Object Model (DOM) en el código. Puede usar el método window.getElementById o la biblioteca jQuery. Puede usar estas técnicas en sus recursos web HTML, pero no se admiten para acceder a elementos de páginas de aplicación de Microsoft Dynamics 365 o formularios de entidad. En su lugar, el acceso a elementos de formulario de entidad se expone a través del modelo de objetos Xrm.Page. El equipo de desarrollo de Microsoft Dynamics 365 se reserva el derecho a cambiar la manera en que se crean las páginas, incluidos los valores de ID para elementos, por lo que el uso del modelo de objetos Xrm.Page protege su código de cambios en la manera en que se implementan las páginas. Para obtener más información, vea Use el modelo de objeto Xrm.Page.

Definir los nombres únicos para las funciones de JavaScript

Cuando es el único desarrollador para una página HTML, puede administrar fácilmente los nombres de las funciones de JavaScript que use. En Microsoft Dynamics 365, otras soluciones pueden agregar funciones de JavaScript a la página donde se usa la función.

Si dos funciones de JavaScript de una página tienen el mismo nombre, la primera función definida se sobrescribe por la segunda. Por este motivo, asegúrese de definir los nombres únicos para las funciones de JavaScript. Para obtener más información, vea Creación de bibliotecas de script.

Usar métodos de acceso a datos asincrónicos

Si obtiene acceso a los datos mediante los servicios web de Microsoft Dynamics 365, use siempre una XMLHttpRequest que esté configurada para ejecutarse de manera asincrónica. El motivo es que el explorador opera en un solo hilo. Si el hilo se usa para ejecutar un proceso de larga ejecución de forma sincrónica, el explorador dejará de responder.

Nota

XMLHttpRequests sincrónico está obsoleto en el hilo principal del explorador debido a los efectos perjudiciales para la experiencia del usuario final. Algunos exploradores ahora proporcionan una advertencia cuando detectan esto. Si los exploradores implementan la especificación en algún momento en el futuro, se lanzará una excepción InvalidAccessError.Más información:http://www.w3.org/TR/XMLHttpRequest/#synchronous-flag y https://xhr.spec.whatwg.org/#the-open()-method

Depurar JavaScript en Microsoft Dynamics 365

Cada explorador proporciona algún tipo de extensión de depuración.Internet Explorer proporciona herramientas del desarrollador que puede usar para depurar scripts en Microsoft Dynamics 365. Las herramientas para desarrolladores de Internet Explorer se pueden abrir presionando F12 al ver una página con Internet Explorer. Para obtener más información, consulte Uso de las herramientas del desarrollador F12.

Para Google Chrome, presione F12 para abrir las herramientas para desarrolladores.Firebug es una popular extensión de explorador para desarrollo web con Mozilla Firefox. Para Apple Safari, primero debe elegir la opción Mostrar el menú de Desarrollo en la barra de menú en Preferencias avanzadas. A continuación puede elegir Mostrar inspector web en el menú Desarrollo.

También puede usar Microsoft Visual Studio. Para obtener más información, consulte Cómo depurar JScript en Microsoft Dynamics CRM 2011.

Cuando usa bibliotecas JavaScript en Microsoft Dynamics 365, las bibliotecas se cargan con la página web. En ocasiones puede resultar difícil aislar la biblioteca específica en el entorno de depuración. Al usar las herramientas de depuración en Microsoft Edge, en la pestaña Depurador, haga clic en el icono de carpeta en la esquina superior izquierda y expanda los scripts disponibles y busque el que tiene el nombre que corresponde al nombre del recurso web de JavaScript, como el recurso web new_myCustomJavaScript.js que se muestra a continuación. También puede buscar la biblioteca JavaScript escribiendo el nombre de archivo en el cuadro de búsqueda.

Depurar JavaScript

Herramientas de depuración para distintos exploradores con capacidades similares. Una vez que ha encontrado la biblioteca, puede establecer un punto de interrupción y volver a crear el evento que debe hacer que el código se ejecute.

En el nuevo cliente del centro de servicio interactivo (introducido en Dynamics 365), Dynamics 365 inserta dinámicamente el contenido de la biblioteca JavaScript en lugar de cargarlo con la página. Esto implica que no puede establecer puntos de interrupción en el código personalizado porque cada vez que se carga la página, el código se inserta en una de las bibliotecas dinámicas, lo que impedirá que se toque el punto de interrupción especificado. En este caso, tendrá que usar algunas otras técnicas para depurar su código.Más información:Blog: Depuración de código JavaScript en CRM mediante las herramientas del desarrollador del explorador

Escribir mensajes en la consola

El uso del método window.alert al depurar JavaScript sigue siendo una forma común de solucionar problemas de código en la aplicación. Sin embargo, ahora que todos los exploradores modernos proporcionan acceso sencillo a las herramientas de depuración, no se recomienda, especialmente cuando otras personas pueden estar usando la aplicación que está depurando.

Piense en escribir sus mensaje en la consola en su lugar. Lo siguiente es una pequeña función que puede agregar a sus bibliotecas y que puede usar para enviar los mensajes que desea ver en la consola cuando se abre.

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

A diferencia del uso del método de alerta, si se olvida de quitar código que use esta función, las personas que usen la aplicación no verán los mensajes.

Ver también

Amplíe Microsoft Dynamics 365 en el cliente
Trabajar con datos de Dynamics 365 utilizando recursos web
Amplíe Microsoft Dynamics 365 en el servidor
Escriba código para formularios de Microsoft Dynamics 365
Personalizar los comandos y la cinta de opciones
Recursos web para Microsoft Dynamics 365
Introducción a la API web de Microsoft Dynamics 365 (JavaScript del lado cliente)
Use el modelo de objeto Xrm.Page
Blog: Depuración de código JavaScript en CRM mediante las herramientas del desarrollador del explorador

Microsoft Dynamics 365

© 2017 Microsoft. Todos los derechos reservados. Copyright