No debería ser noticia que se retire el soporte a dos navegadores con 6 y 10 años de antigüedad, especialmente teniendo en cuenta cuánto han cambiado los hábitos de navegación en el último par de años. Pero cuando está Internet Explorer de por medio todo cambia, y algunos diseñadores, hartos de tirarse de los pelos por conseguir la compatibilidad con estas antiguallas, han decidido dejar de ofrecer soporte para IE6 e IE7.
Es el caso de HTML5 Boilerplate, que para su versión 5.0 propone retirar completamente el uso de clases condicionales para las versiones 6 y 7 del navegador de Microsoft. Su decisión, más allá del posible gusto de los committers por el trabajo sencillo, está basada en argumentos razonados de entre los que destaca el hecho de que Microsoft anunciase que Internet Explorer 10 no soportará comentarios condicionales.
Esto significa que habrá que adaptarse a los navegadores modernos y olvidar la poco ortodoxa detección del navegador (que se puede basar en prejuicios o gustos personales de quien desarrolla) y empezar a utilizar la detección de capacidades, que es lo que realmente importa a la hora de usar una u otra feature.
Para quien no los haya usado nunca, comentar que los comentarios condicionales son una estrategia utilizada por las distintas versiones de Internet Explorer para ofrecer código que sólo será interpretado por alguna versión. Dichos condicionales van incluidos dentro de comentarios HTML aparentemente normales, por lo que son completamente ignorados por cualquier otro navegador. Un ejemplo habitual de su uso es el siguiente, en el que se incluye una librería javascript que suple algunas de las funcionalidades carentes en la versión antigua.
<!—[if lt IE 7]>
<script src=“http://ie7-js.googlecode.com/svn/version/2.1(beta4)/IE7.js”></script>
<![endif]—>
Otro motivo para desechar la detección del navegador son los modos de compatibilidad de Internet Explorer, que hacen que por ejemplo su versión 9 se pueda comportar como tal, reconociendo los elementos de audio de HTML5, o pueda comportarse como IE5, renderizándolos como un elemento cualquiera. En ese caso, aunque el navegador real sea el mismo, es mejor preguntar directamente si existe la capacidad de reproducir ese audio:
function supportsAudio()
{
var o = document.createElement( 'audio' );
return ( o.canPlay );
}
Si todos los desarrolladores web empezásemos a pensar de esta manera, podría suponer un nuevo avance para la guerra de navegadores, ya que dejaríamos de lado nuestras preferencias por uno u otro para centrarnos en nuestro problema: que la página haga lo que tiene que hacer. Y se agradece que desde plataformas de moda como Bootstrap o Boilerplate, se tomen iniciativas que intenten facilitar al desarrollador esta forma de trabajar.
Lista oficial de HTML5 Boilerplate | Remove IE conditional classes
Microsoft MSDN | About conditional comments
En Genbeta Dev | ie7.js y HTML5 BoilerPlate 4.0.0