Archivo de la etiqueta: explorer

¿Qué manías tienes como desarrollador?

dreamcatcher

No entendemos de fiestas y por eso seguimos dando el callo en estos señalados días (de hecho estamos más activos que nunca) y, obviamente, queremos preguntarte como cada semana. Esta vez la cosa no va ni de lenguajes de programación ni de tecnologías cool ni de agrias polémicas. No, en esta ocasión La pregunta de la semana es sobre algo mucho más distendido:

¿Qué manías tienes como desarrollador?

Eres un maniático y lo sabes ¿Haces la reunión de 5 minutos del Scrum a la pata coja? ¿Siempre tienes el editor de código en la pantalla derecha? ¿Usas postits de colores? ¿Empiezas una nueva libreta con cada proyecto? ¿No eres nadie sin tu gorro de pensar? ¿Besas una estampita de Fray Leopoldo cada mañana antes de entrar a trabajar? ¡Queremos saber!

Una pregunta que puede dar mucho juego y que esperamos obtenga tantas respuestas como la de la semana pasada, ¿Cuáles han sido tus mayores quebraderos de cabeza como programador?. De las cuarenta y siete respuestas, la que habéis votado más ha sido esta de l3x que en dos palabras resume los miedos y odios de muchos:

Internet Explorer

Seguir leyendo ¿Qué manías tienes como desarrollador?

Depurando de forma avanzada JavaScript con las herramientas de desarrollo

API console para depurar JavaScript

Las herramientas de desarrollo de los navegadores cada vez son más potentes y van mejorando día a día. El primer gran debugger de JavaScript fue Firebug para Firefox, que hace unos 4 o 5 años no tenía ni la más mínima competencia, pero actualmente tenemos las herramientas de desarrollo de Chrome y las de Internet Explorer (que han mejorado mucho en su versión número 11) como buena y completa competencia.

Las APIs de la consola han evolucionado y encontramos cosas tan interesantes como tablas de datos en la consola, algo que ayuda mucho a visualizar, sobre todo, respuestas por parte de un servidor.

Funciones básicas

Desde hace tiempo la API básica que incorporan casi todas las herramientas de desarrollo de los navegadores permitía lanzar nuevos avisos de distintos tipos. Estas utilidades son esenciales cuando queremos depurar ciertas partes del código de una forma no intrusiva o monitorizar ciertos parámetros, aunque hay quien prefiere las alertas (alert()), que tienen la ventaja de parar la ejecución.

Los avisos básicos que se le puede mandar a una consola de depuración (y soportan casi todas las herramientas de debugging) son básicamente tres: el de registro o log, el de aviso y el de error. La función para crear un registro o una alerta son más o menos similares, pero la función de enviar un error hace un seguimiento de como se ha llegado hasta el propio error, como veremos a continuación.

A la API de la consola se accede a través de console, que alberga distintos métodos para crear estas alertas (log(), warn() y error()). Estos métodos nos permiten enviarle texto o cualquier tipo de variable (ya sea un número, un objeto JSON, una función, un elemento del DOM…) y así poder visualizar cómodamente los datos extraídos del documento.

Para probar los ejemplos debes de abrir la consola de depuración (normalmente pulsando F12).

Mandar un log con un texto básico:

// Texto console.log("Texto de prueba")

Mandando un log con un objeto del DOM:

// Objeto DOM console.log(this)

Mandamos un log con texto y un objeto:

// Texto y objetos console.log("Objeto de prueba:", {a:1, b:2, n:[1, 2, 3]})

Por último, para completar las acciones básicas limpiaremos la consola con console.clear():

// Limpiar consola console.clear()

Funciona igual de igual forma los tres tipos de avisos, por lo que solo voy a poner un solo ejemplo más de cada uno para ver la diferencia:

Tablas en consola

Recientemente se ha implementado en las principales herramientas de depuración (para ser exacto en Firebug y las de Chrome) la función de generar tablas a partir de un objeto o arrays bidimensionales, que nos facilita la visión de datos que se han podido generar o recibir.

console.table()

La imagen de arriba la genera la consola al usar console.table() enviando un objeto que perfectamente podríamos recibir desde un servidor:

var WeblogsSL = [ {nombre: "Xataka", visitas: 300000, color: "Verde"}, {nombre: "Applesfera", visitas: 200000, color: "Gris"}, {nombre: "Genbeta", visitas: 220000, color: "Azul"} ];   console.table(WeblogsSL);

console.table()

Al igual que antes, podemos hacer lo mismo con un array bidimensional, que podría contener los datos de una gráfica, por poner un ejemplo:

var grafica = [ [1048, 1083, 1127, 1154, 1215], [952, 977, 1109, 1063, 1054], [944, 944, 1008, 1073, 1073], [34, 40, 51, 56, 61], [1191, 1258, 1290, 1368, 1402], [542, 543, 571, 606, 630] ];   console.table(grafica);

Sabiendo usar estas funcionalidades de la API de la consola nos será mucho más fácil depurar. Seguir leyendo Depurando de forma avanzada JavaScript con las herramientas de desarrollo

Internet Explorer 11 se avergüenza de ser Internet Explorer, y eso es muy bueno

Por primera vez en la historia, Microsoft ha quitado características de su navegador. Infame entre los desarrolladores web, Internet Explorer se ha caracterizado siempre por un pésimo soporte de los estándares web, complicando enormemente el diseño de páginas webs.

Pero algo ha cambiado: en la versión preliminar de IE11 que Microsoft publicó el pasado mes se pueden encontrar importantes novedades, que parecen indicar que, por fin, esta versión dejará de dar dolores de cabeza.

Aspecto del nuevo IE11 (Fuente: geek)

Un nuevo «User-agent»

El user-agent es el mensaje con el que un navegador se «presenta» ante un servidor. Aparte de servir para hacer estadísticas sobre usuarios, tiene la importante misión de permitir personalizar parte del contenido web según la plataforma del usuario.

Si bien IE10 enviaba una cadena como esta:

Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0)

ahora en el nuevo IE11 la que se envía es más sencilla:

Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv 11.0) like Gecko

¿Ves la diferencia? Efectivamente, ya no aparece el identificador «MSIE» que caracteriza al navegador de Microsoft. No quieren que el servidor se de cuenta de que se trata de una versión de Internet Explorer, y prefieren que se le clasifique como de tipo Safari, los primeros en usar la coletilla de «like Gecko«.

Variables globales y Javascript

Pero hay más… El objeto global navigator ya tampoco permite identificar a IE11 como un producto de Microsoft, ya que este es ahora su contenido:

  • navigator.appName = ‘Netscape’
  • navigator.product = ‘Gecko’

Así mismo, toda una serie de objetos propios de IE y alternativos a los mecanismos estandarizados han sido eliminados, dejando como única alternativa el uso de los estándar. Estos objetos o métodos ya no existen en IE11:

  • window.execScript() – Forma no estándar de eval()
  • window.doScroll() – Forma no estándar de hacer scroll
  • script.onreadystatechange – Forma no estándar de saber cuando un script se termina de cargar.
  • script.readyState –