Variable window.IsUSD = true que introduce USD sobre el header

Una de las funcionalidades que más destaca del Unified Service Desk es la integración nativa con los formularios de CRM mediante la navegación a una URL de nuestra instancia. Además de esto, el USD nos permite por lo general navegar a cualquier otra dirección que deseemos mediante la UIIAction Navigate. Esto nos permitirá abrir aplicaciones web externas dentro de nuestro USD. ¿Es posible desde una aplicación web saber si la navegación se ha producido dentro de una pestaña del USD? La respuesta es sí: mediante la variable window.IsUSD.

El Unified Service Desk se toma la molestia de introducir en el Header de cada web que se carga un pequeño fragmento de código Javascript como el siguiente:

 

 

De modo que mediante el acceso a esta variable podremos saber si nuestra aplicación web -o nuestro Web Resource incrustado en un formulario de CRM- ha sido visitada desde un USD.

Variable IsUSD en el Header de Google

Variable IsUSD en el Header de Google

 

En el caso de que estemos navegando sobre un formulario de CRM, el USD también incluirá esta variable en el Header de los Iframes que contiene (Iframes normales o Webresources).

Variable IsUSD en el Header de Bing abierto en un Iframe de un formulario CRM

Variable IsUSD en el Header de Bing abierto en un IFrame de un formulario CRM

 

Variable IsUSD en el Header de un Web Resource de un formulario CRM

 

Pero, ¿en qué situaciones podríamos aprovecharnos de este hecho?

Las razones por las cuales necesites saber si un USD ha abierto tu aplicación web pueden ser muchas, pero existe un gran motivo por el cuál esa variable está ahí.

De modo nativo, el USD nos avisa de eventos generados en cualquier formulario. Un ejemplo sería un evento OnSave de un formulario. Este evento se envía al USD y éste lo recibe pudiendo generar con él una Action Call que derive en cualquier otra acción o ejecución de código. El método que utiliza CRM para “avisar” al USD de que en el formulario se ha producido un evento de guardado es mediante la ejecución de un comando Javascript del tipo:

 

Cuando el USD detecta que queremos navegar a una web del dominio event lo interpretará como que esa página web le está avisando de un evento y no realizará la navegación.

Y aquí está la clave de la variable IsUSD. Si incluimos una linea como la anterior en un Web Resource y abrimos el formulario desde un navegador y no desde el USD, el navegador ejecutará esa orden produciendo que la página navegue a esa “URL”. El resultado será que nuestro navegador nos abrirá una ventana de una página web totalmente ajena a nuestro proyecto y que por supuesto mostrará publicidad de cualquier tipo.

Esta aquí uno de los motivos por los cuales Microsoft ha incluido esta funcionalidad de inyectar sobre cualquier web una variable que nos avise de que la navegación se está produciendo desde USD y no desde otro navegador. Mediante la verificación de esta variable podremos ahorrarnos ejecutar esa orden de evento si la navegación está fuera del USD añadiendo a nuestro código la siguiente comprobación:

Con ello podremos controlar este hecho en nuestras aplicaciones web

Navegando en el mismo formulario con y sin USD

Navegando en el mismo formulario con y sin USD