Llegamos a ustedes gracias a:



Reportajes y análisis

7 fallas crónicas de navegador que son una plaga en la web

[25/11/2016] Los navegadores web son increíbles. Si no fuese por ellos, no seríamos capaces de conectarnos con nuestros usuarios y clientes vertiendo nuestra data y documentos en sus escritorios, tabletas, y teléfonos. Desafortunadamente, todo el contenido maravilloso enviado por el navegador web, nos frustra mucho más cuando el servicio no es tan elegante o libre de errores como quisiéramos.

Cuando se trata del desarrollo de páginas web, estamos tanto a la merced de los navegadores como en deuda con ellos. Cualquier falla en cualquier plataforma destaca, especialmente cuando ese error avería las máquinas de nuestros usuarios. Y con el diseño siendo algo, lo que más resalta o encaja, cualquier línea gorda o con un toque de color mal aplicado destruye la experiencia estética que hemos trabajado en crear. Hasta el menú más pequeño, como añadir un píxel extra al ancho de una línea o desalinear por poco una tabla, puede resultar en una experiencia de usuario frustrante, sin mencionar el costo de descubrir, inspeccionar, y trabajar alrededor de estas fallas.

Por supuesto, solía ser peor. Las diferencias más significativas entre los navegadores han sido eliminadas en gran medida por la fidelidad a los estándares web W3C. Y las diferencias que permanecen pueden ser generalmente ignoradas gracias a la proliferación de bibliotecas como JQuery, que no solo hacen que sea más fácil el hacking de JavaScript, sino también esconden las maneras en las que los navegadores difieren.

Estas bibliotecas tienen el hábito de congelar las fallas del navegador. Si las compañías de navegador reparan algunas de sus peores fallas, las "correcciones nuevas pueden alterar actualizaciones y enmiendas anteriores. De repente el "arreglo se convierte en el problema que está alterando la vieja estabilidad que hemos improvisado alrededor de la falla. Los programadores no tienen cómo ganar.

La estabilidad proporcionada por bibliotecas como JQuery también ha motivado a que los constructores de navegadores aceleren y automaticen sus procesos de actualización de navegador. Mozilla está comprometido a expedir una nueva versión de Firefox en periodos de pocos meses. En el pasado, cada versión sería un blanco estable para los desarrolladores y podríamos colocar un pequeño GIF en nuestros sitios proclamando que ellos trabajan mejor en, digamos, IE5. Ahora el odómetro gira tan rápidamente que una nueva versión de Firefox será lanzada en el tiempo que le toma al HTML viajar del servidor al cliente.

Mientras tanto, les exigimos a los navegadores que lo trabajen mucho mejor. La página web de mi periódico local trae a mi máquina a sus rodillas -expandiendo anuncios que aparecen de la nada, fragmentos de videos que se reproducen automáticamente, código para personalizar anuncios de acuerdo a mi historia reciente de navegación. Si mi hija ve una página web de muñecas, el JavaScript intenta frenéticamente encontrar un anuncio de muñecas para mostrarme. Toda esta magia estropea la CPU.

Todo esto significa que las fallas de los navegadores de hoy son más raras, y más difíciles de identificar. Aquí daremos una mirada a los géneros más recientes de plaga de fallas y -en muchos casos- simplemente quejas de los diseñadores web y desarrolladores.

Diseño

Los errores de navegador más visibles son los de diseño. La base de datos Bugzilla de Mozilla tiene 10 secciones para problemas de diseño, y éstas no incluyen fallas de diseño categorizadas por estar relacionadas al DOM, CSS o a Canvas. El trabajo más importante del navegador es arreglar el texto y las imágenes, y acertar es con frecuencia difícil.

Muchas fallas de diseño pueden parecer pequeñas al punto de estar casi ocultas. La falla 1303580 de Bugzilla, por ejemplo, señala que Firefox usa la versión itálica de un tipo de letra cuando las etiquetas CSS convocan la versión oblicua. Quizás solo un adicto a las letras lo notaría. Mientras tanto, la falla 1296269 de Bugzilla reporta que partes de las letras en Comic Sans están cortadas, al menos en Windows. Los diseñadores de estilos de letras lo pueden notar, y eso les importa. Cuando ellos no pueden obtener la apariencia y sensación exacta en todos los navegadores, los diseñadores web pueden frustrarse más que nadie.

Existen cientos, miles, quizás hasta millones de estas fallas. En InfoWorld, hemos encontrado problemas con imágenes que desaparecen en nuestro editor CMS y etiquetas span, y aparecen únicamente en el DOM.

Fugas de memoria

Con frecuencia es difícil notar las pérdidas de memoria. Por definición, estas no cambian ninguna propiedad visual. El navegador no hace una limpieza después del hecho de que la página web tuvo un rendering correcto. Unos pocos viajes de más a páginas web que desatan la fuga, y su máquina se vuelve muy lenta porque toda la memoria RAM está encerrada sosteniendo una estructura de data a la que no se le dará un nuevo propósito. Como resultado, el sistema operativo intercambia bloques de memoria virtual en el disco y usted pasa su tiempo esperando. La mejor opción es re-iniciar su máquina.

Los detalles de las fallas de fuga de memoria pueden ser enloquecedoramente misteriosos, y tenemos suerte de que algunos programadores se toman el tiempo de arreglarlos. Consideren la falla 640578 de la pila del navegador Chromium. Cambiar parte del DOM manipulando la propiedad innerHTML produce fugas de memoria. Una pieza de muestra de un código con una llamada de circuito ajustada y repetida de requestAnimationFrame duplicará el problema. Existen docenas de problemas como éste.

Por supuesto, no siempre es responsabilidad del navegador. El problema 640922 de Chromium, por ejemplo, también detalla una fuga de memoria y proporciona un ejemplo. Un análisis más detallado demuestra que el código de ejemplo estaba creando objetos Date () a lo largo del camino para probar el tiempo, y probablemente estos fueron la fuente del problema.

Flash

Es prácticamente oficial. Todos han olvidado los maravillosos videos web y arte anti-alias que Adobe Flash trajo a la web. En lugar de hacerlo, lo culpamos por todas las averías que podrían haber sido o no su culpa. Actualmente está siendo retirado oficialmente, pero no se irá rápidamente. Inclusive algunas de las compañías más innovadoras que están elevando los estándares web, aun aparentan tener código Flash en sus páginas. Me sorprende la frecuencia con la que me encentro con código Flash fuera de páginas web de MySpace y GeoCities.

Toques y clics

No es sencillo hacer malabares con varios tipos de input, especialmente ahora que las tabletas y los teléfonos generan toques que podrían o no actuar como clics de mouse. Entonces no debería resultar sorprendente encontrar que existen muchas fallas en esa área. El marco de referencia de Bootstrap JavaScript mantiene una lista de sus fallas que generan más furia, y algunas de las peores están dentro de esta categoría.

Safari, por ejemplo, algunas veces no registrará toques de dedo en el texto en la etiqueta <body> (151933). Algunas veces los menús <select> no funcionan en la iPad porque el navegador ha cambiado el rectángulo dónde se busca la entrada (150079). A veces los clics desatan una vibración extraña en el ítem -que hasta podría verse como si se hubiese hecho a propósito por un diseñador inquieto (158276). Todo esto lleva a una confusión cuando el texto o las imágenes en la pantalla no reaccionan de la manera en que esperábamos.

Video

El plan siempre ha sido simplificar la entrega de audio y video moviendo la responsabilidad dentro del navegador y fuera del mundo de los plugins. Esto ha eliminado problemas de interfaz, pero no ha removido todos los problemas. La lista de fallas de video es larga, y muchas de ellas son demasiado visibles. El inciso 754753 de Bugzilla hace la siguiente descripción: "en su mayoría puntos rojos y verdes que contienen imágenes fantasma variadas, y la descripción 1302991 de Bugzilla dice, 'tartamudeos' por falta de una mejor palabra.

Algunos de los problemas más complejos están emergiendo conforme los navegadores se integran a varios mecanismos de codificación diseñados para prevenir la piratería. La falla 1304899 sugiere que Firefox no está descargando el mecanismo de codificación (EME) correcto de manera automática de Adobe. ¿Es culpa de Firefox o Adobe? ¿Será quizás culpa de un apoderado extraño?

Las fallas van a continuar dominando. Integrar video web con otras formas de contenido mediante la incorporación de etiquetas de video a HTML5 ha abierto muchas posibilidades nuevas para los diseñadores, pero cada nueva posibilidad significa nuevas oportunidades para que fallas e inconsistencias aparezcan.

Flotación

La habilidad para que la página web siga al mouse moviéndose a través de la página, les ayuda a los diseñadores web a darle pistas a los usuarios respecto a qué funciones podrían estar escondidas detrás de una imagen o palabra. Desafortunadamente, los eventos flotantes no siempre llegan a la parte superior de la cadena tan rápido como podrían.

El nuevo navegador Microsoft Edge, por ejemplo, no esconde el cursor cuando el mouse flota sobre algunos ítems de input <select> (817822). A veces la flotación no cesa (5381673).

A veces el evento de flotación está ligado al ítem incorrecto (7787318). Todo esto lleva a una confusión y desalienta el uso de un efecto muy bueno.

Malware

Aunque existe la tentación de atribuir todas las fallas de un navegador a los desarrolladores de navegador, es con frecuencia injusto hacerlo. Muchos de los problemas son causados por el malware diseñado para posar como alguna extensión o dispositivo plugin de utilidad. En muchos casos, el malware hace algo realmente útil mientras secretamente roba clics o comercio en el fondo.

El problema es que la interfaz de la extensión es bastante poderosa. Una extensión puede insertar etiquetas y códigos arbitrarios en todas las páginas web. En las manos adecuadas, esto es muy bueno, pero es fácil de ver cómo el nuevo código de la extensión puede tropezarse con el de la página web. ¿Qué? ¿Usted no quiso redefinir el comportamiento de la función $?

Esto no es tanto una falla como puede ser un problema filosófico con una función muy agradable. Pero con un gran poder viene una gran responsabilidad -quizás mayor de la que cualquier programador de extensiones puede abarcar. La mejor manera de ver este problema es darse cuenta de que es la única área donde nosotros los usuarios tenemos el control.

Nosotros podemos apagar las extensiones y limitarlas a solo unas cuantas páginas web donde no existan problemas. La API es un poco poderosa para un uso diario -es tan poderosa que es tentador llamar a las extensiones las fallas más grandes de las APIs. Pero eso negaría todo lo que hace por nosotros.