El principio del fin de ShowModalDialog

CuandoShowDialogModal un cliente te contrata para que realices algún tipo de aplicación web, todos quieren que esta aplicación sea multiplataforma, por lo menos que funcione en los tres navegadores más extendidos en el mercado: IE, Firefox y Chrome.

Con el lanzamiento de la versión 37 de Chrome, las aplicaciones más antiguas que utilicen ShowModalDialog dejarán de funcionar en Chrome, dado que éste ha dejado de dar soporte a este componente, aunque han sacado un “workaround” modificando las políticas del navegador que permitirá a Chrome soportarlos hasta Mayo del 2015. Otros navegadores como Firefox la tienen “deprecated” desde la versión 28 y las noticias que corren es que no tardarán mucho en no dar soporte; Safari también dejará de darle soporte en breve.

En este punto, es importante conocer el porqué de la creación de este elemento y su uso:

ShowModalDialog fue introducido por Microsoft en Internet Explorer 4 que salió al mercado en 1997, a razón de la batalla que había con Netscape por acaparar el mercado de los navegadores. Este componente nunca fue un estándar pero con el tiempo la mayoría de los navegadores fueron añadiendo soporte: Firefox lo hizo en su versión 3, Chrome desde su primera versión pero siempre con problemas, Safari en su versión 5.1; pero también los hay que nunca lo han soportado como Opera.

¿Por qué Microsoft agrega cuadros de diálogo modales? Conceptualmente, son un elemento de interfaz de usuario muy usado en la mayoría de todas las interfaces de dispositivos. Cuando tratamos de realizar algunas operaciones sobre dispositivo nos aparece un cuadro de diálogo modal que nos solicita realizar alguna acción, como por ejemplo apagar el móvil, tableta, ordenador portátil,… seguro que aparecerá con un cuadro de diálogo modal que solicitará que confirme su decisión antes de poder apagarlo. Lo que lo hace modal es el hecho de que se ven obligados a hacer una selección antes de hacer cualquier otra cosa.

La idea de Microsoft, a priori fue una gran idea, pero el problema en cómo implementa el elemento ShowDialogModal y todos los problemas y consecuencias que conlleva esta mala implementación que han hecho que los demás proveedores mundiales de navegadores finalmente hayan conseguido empezar a retirar su soporte para este elemento.

Los problemas que generan los cuadros de diálogo modales son:

  1. Cuando se lanza ShowDialogModal, se congela la ventana padre y todas las pestañas del navegador que tuvieras abiertas en ese momento, excepto Chrome que no las congela lo que provoca añadir código especial para tratarlo. Este comportamiento está considerado un mal funcionamiento en términos de experiencia de usuario.
  2. La ventana padre y la ventana modal son dos ventanas independientes, lo que significa que se deben programar dos páginas. Lo que hace ShowDialogModal es comunicarlas. Esta característica añade una complejidad innecesaria y dificulta el comportamiento de las nuevas características de Internet como Mutation Observers, Object.observe, and Promises.
  3. Es una gran fuente de “bugs”, incluyendo graves vulnerabilidades de seguridad.
  4. El mayor problema con los cuadros de diálogo modales es que Firefox, Chrome y Safari entre otros, los tratan como ventanas emergentes por defecto y los bloquean. Un usuario tiene que permitir explícitamente la ventana emergente con el fin de ver su cuadro de diálogo modal, lo que suele provocar frustración en el usuario.
  5. Depurar un cuadro de diálogo modal es una tarea engorrosa. IE no permite abrir sus herramientas de depuración en ellos, Firefox, Chrome y Safari permite abrir Firebug / Web Inspector, pero buena suerte al depurar cualquier script que se lance cuando se abra el cuadro de diálogo. Esto casi obliga a depurar con “Alerts”, como si fuera 1999 para determinar lo que está pasando. .

¿Y ahora qué? Ésta es la pregunta que se hace todo desarrollador web que haya realizado y mantenga aplicaciones que utilizan este componente.

La respuesta es sencilla y complicada a la vez: sustituir este componente por otro. Sencilla porque hay muchas alternativas, complicada porque el coste de este cambio puede ser importante.

Como sustitutos de ShowDialogModal se puede utilizar: JQueryUI.Dialog, Dojo, MooTools, YUI Bootstrap Modal,…

La desaparición de ShowModalDialog era un suceso que todos los programadores web sabíamos que podría suceder por los indicios que los navegadores iban dando en sus actualizaciones, pero que nunca creíamos que pudiera suceder.

ShowModalDialog ha sido y es un gran concepto que Microsoft introdujo en los navegadores, pero que no supo implementarlo de forma que su utilización y mantenimiento fuera rápida y sencilla.

Si quieres obtener más información acerca de cómo Sogeti puede ayudarte en el desarrollo de aplicaciones web, haz clic aquí.

Más información:

Roberto Bermejo

.NET Architect and Cloud Lead | Soluciones Microsoft | SOGETI ESPAÑA

One thought

  1. Adicionalmente, Microsoft ha liberado recientemente WinJS 3.0, compatible con los últimos navegadores y multiplataforma (http://goo.gl/bsNvml), y cuyo MessageDialog se utiliza para mensajes de confirmación. Adicionalmente tiene otro tipo de dialogos no modales como los Flyout que al mostrarlos no congelan la aplicación.

    Me gusta

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s