400 likes | 553 Views
u na web más. b uenas prácticas. Alejandro Hidalgo Fernández MVP Internet Explorer. Development Advisor, Plain Concepts. !Un aplauso para vosotros!. Objetivo. Mejorar tus desarrollos web para adaptarlos a los cambios constantes de la propia web. ¿Qué vamos a ver?. SAME MARKUP.
E N D
una web más buenas prácticas Alejandro Hidalgo Fernández MVP Internet Explorer. Development Advisor, Plain Concepts
Objetivo Mejorar tus desarrollos web para adaptarlos a los cambios constantes de la propia web.
SAME MARKUP Experiencia multinavegador
¿En qué consiste? • El mismo HTML, CSS y JavaScripttienen el mismo comportamiento en todos los navegadores. • Basado en estándares • Los navegadores antiguos pueden necesitar código extra para emular este comportamiento.
Validando nuestro markup • Importancia para Multinavegador • Importancia del SEO • No es oro todo lo que reluce. No implica ser malos si no se pasa en verde el validador. • Importancia de validar el código estático.
Detección del NAVEGADOR Experiencia multinavegador
Técnicas de detección // User Agents navigator.userAgent // Comentarioscondicionales <!--[if IE]><![endif]--> // Objetosúnicos if(document.all) … if(window.attachEvent) … if(window.ActiveXObject) … // Comportamientosúnicos(CSS Hacks, etc.) background: #FFFFFF /* Firefox y los demás */ *background: #000000 /* IE7 e inferiores */ _background: #CCCCCC; /* Sólo IE6 */
Condicionales en CSS IE Cualquier versión de IE ltIE X Inferiores a X lteIE X Inferiores o iguales a X IE X Solo para la version X gteIE X Superiores o iguales a X gtIE X Superiores a X
Con jQuery if( jQuery.browser.msie ) { Códigoespecífico } jQuery.browser.version webkit safari opera msiemozilla
Interacciones con los navegadores Resultado en el navegador Estructura de código = Código alternativo = Punto de comprobación
Interacciones con los navegadores Resultado en el navegador Estructura de código = Código alternativo = Punto de comprobación
Tipos de problemas • Un navegador añade una capacidad estándar • Ejemplo. Usar SVG o VML • Un navegador elimina una capacidad perecedera • Ejemplo. -moz-opacity • Un navegador corrige un bug que yo había parcheado.
¿En qué nos afecta? • Debes actualizar tu sitio constantemente. • Muchos navegadores • IE, Firefox, Chrome, Safari, Opera, more… • Muchas versiones • Alto coste de tiempo.
detección de capacidades Experiencia multinavegador
¿En qué consiste? 1. Compruebosisoporta la capacidad 2. Si esasíhagouso de ella 3. Si no usounasoluciónalternativa
A tener en cuenta Compruebosólo las capacidades usadas Primero los estándares Sólocompruebo una capacidad
Interacciones con los navegadores Comprobación de características Comprobación de navegador = Codigoalternativo = Punto de comprobación
Interacciones con los navegadores Detección de capacidades Detección del navegador = Códigoalternativo = Punto de comprobación
Interacciones con los navegadores Detección de capacidades Detección del navegador = Códigoalternativo = Punto de comprobación
Comprobación de capacidades en Markup <videosrc="test.video"> <objectsrc="test.video"> <ahref="test.video"> Descarga el video </a> </object> </video>
Detección de capacidades en CSS .target { border-radius:20px; -moz-border-radius:20px; -webkit-border-radius:20px; }
Si no tienes tiempo • Detección del navegador es más rápido. • Usa un Framework • jQuery– http://jquery.com/ • Modernizr– http://www.modernizr.com • ie7-js - http://code.google.com/p/ie7-js/ • HTML5 Cross Browser Polyfills- http://bit.ly/ddLS2d • Los Frameworks nos son perfectos
Cómo jQuery detecta getElementById varform = document.createElement("div"), id = "script" + (new Date).getTime(); form.innerHTML = "<a name='" + id + "'/>"; varroot = document.documentElement; root.insertBefore( form, root.firstChild ); if ( document.getElementById( id ) ) { …
Usando Modernizr // Comprobando HTML5 Canvas if(Modernizr.canvas) { varc = document.createElement('canvas'); varcontext = c.getContext('2d'); } // Comprobando formatos de HTML5 Video if (Modernizr.video && Modernizr.video.ogg){ // preloadogg video assets } elseif (Modernizr.video && Modernizr.video.h264){ // preload h264 assets }}
A tener en cuenta Comprobar si una propiedad existe en un objeto global Crear un elemento y comprobar si existe una determinada propiedad Crear un elemento y comprobar si cierto método existe y cual es el valor devuelto Crear un elemento y ponerle cierto valor a una propiedad, luego comprobar si retiene ese valor
A tener en cuenta Comprobar si una propiedad existe en un objeto global Geolocalización function supports_geolocation() { return!!navigator.geolocation; } Modernizr.geolocation
A tener en cuenta Crear un elemento y comprobar si existe una determinada propiedad Comprobar si una propiedad existe en un objeto global Canvas function supports_canvas() { return!!document.createElement('canvas').getContext; } Modernizr.canvas
A tener en cuenta Crear un elemento y comprobar si cierto método existe y cual es el valor devuelto Crear un elemento y comprobar si existe una determinada propiedad Formatos de HTML5 Video function supports_ogg_theora_video() { if(!supports_video()) { return false; } varv = document.createElement("video"); returnv.canPlayType('video/ogg; codecs="theora, vorbis"'); }
A tener en cuenta Crear un elemento y ponerle cierto valor a una propiedad, luego comprobar si retiene ese valor Crear un elemento y comprobar si cierto método existe y cual es el valor devuelto Tipos Input var i = document.createElement("input"); i.setAttribute("type", "date"); return i.type !== "text"; !Modernizr.inputtypes.date
www.beautyoftheweb.com empieza con descarga IE9 adaptatussitios web msdn.com/ie http://ietestdrive.com http://geeks.ms/blogs/intensificatuexplorer/
ahidalgo@plainconcepts.com Gracias a todos.