{"id":118,"date":"2013-01-10T20:56:19","date_gmt":"2013-01-10T19:56:19","guid":{"rendered":"http:\/\/multimedia.uoc.edu\/blogs\/htmlcss\/?p=118"},"modified":"2018-10-21T16:29:00","modified_gmt":"2018-10-21T15:29:00","slug":"cross-browser","status":"publish","type":"post","link":"https:\/\/multimedia.uoc.edu\/blogs\/htmlcss\/ca\/css\/cross-browser\/","title":{"rendered":"&#8220;Cross-browser&#8221;"},"content":{"rendered":"<p>[Darrera actualitzaci\u00f3: 21\/10\/2018]<\/p>\n<p>Donada la immensa varietat de navegadors que existeixen en el mercat, \u00e9s extremadament complicat que una p\u00e0gina es vegi igual en tots ells. En ocasions, aix\u00f2 \u00e9s desitjable: en general no voldrem que una p\u00e0gina es vegi igual en un navegador &#8216;d&#8217;escriptori&#8217; que en la pantalla d&#8217;un m\u00f2bil, per\u00f2 en general voldrem, com a m\u00ednim, que tota la funcionalitat estigui disponible per a tots els navegadors i que es conservi un aspecte tan homogeni com sigui possible independentment del navegador que usem.<\/p>\n<p>Existeixen diverses filosofies sobre el tema, com la <i>graceful degradation<\/i> (que proposa dissenyar per als navegadors m\u00e9s potents i assegurar que tota la funcionalitat est\u00e0 disponible per a tots els navegadors) o el <i>progressive enhancement<\/i> (dissenyem per als navegadors m\u00e9s b\u00e0sics i afegim despr\u00e9s, en capes, les funcionalitats m\u00e9s sofisticades per als navegadors m\u00e9s potents).<\/p>\n<p>Podeu llegir, sobre el tema, l&#8217;entrada <a href=\"https:\/\/medium.com\/@julienetienne\/define-graceful-degradation-progressive-enhancement-faf242a8ed51\">Define Graceful Degradation &amp; Progressive Enhancement<\/a> <cite>de <em>Julien Etienne<\/em><\/cite>. I un altre document molt interessant \u00e9s <a title=\"Graded Browser Support - YUI Library\" href=\"http:\/\/yuilibrary.com\/yui\/docs\/tutorials\/gbs\/\">Graded Browser Support<\/a>, proposat inicialment per Yahoo!.<\/p>\n<p>I naturalment, actualment tot es combina amb la necessitat de tenir en compte temes com el <a href=\"http:\/\/multimedia.uoc.edu\/blogs\/htmlcss\/css\/ca\/responsive\/\">responsive design<\/a> i filosofies com el <i>mobile first<\/i>, que proposa que \u00e9s millor comen\u00e7ar pensant en m\u00f2bils i despr\u00e9s &#8216;cr\u00e9ixer&#8217; a pantalles i dispositius m\u00e9s grans i probablement m\u00e9s potents, tot i que totes les aproximacions al tema presenten dificultats importants.<\/p>\n<p>Un recurs imprescindible en el que es documenta el suport de les diferents versions dels diferents navegadors tradicionals (entenent per tradicionals aquells que corren sobre ordinadors amb sistemes operatius Windows, OS X o Linux) per a les diferents funcionalitats de CSS \u00e9s <a title=\"Can I use... Support tables for HTML5, CSS3, etc\" href=\"https:\/\/caniuse.com\/\">Can I use<\/a>. Compta amb un equivalent per a navegadors per dispositius: <a title=\"Mobile HTML5 - compatibility on iPhone, Android, Windows Phone, BlackBerry, Symbian and other mobile and tablet devices\" href=\"http:\/\/mobilehtml5.org\/\">Mobile HTML5<\/a>.<\/p>\n<h2>Polyfills<\/h2>\n<p>Una eina a tenir molt en compte per a poder oferir caracter\u00edstiques sofisticades i no presents en tots els navegadors s\u00f3n els &#8220;polyfills&#8221;, biblioteques de JavaScript que podem carregar si el navegador no suporta de manera nativa alguna caracter\u00edstica que ens resulta necess\u00e0ria, i emular-la a trav\u00e9s de la biblioteca, de manera transparent. En qualsevol cas, s&#8217;han d&#8217;utilitzar amb compte i moderaci\u00f3, perqu\u00e8 comporten efectes secundaris, com un efecte potencialment molt negatiu sobre la velocitat amb qu\u00e8 els navegadors poden mostrar la p\u00e0gina que hem creat.<\/p>\n<p>Biblioteques como <a title=\"html5shiv - HTML5 IE enabling script - Google Project Hosting\" href=\"http:\/\/code.google.com\/p\/html5shiv\/\">html5shiv<\/a> afegeixen suport per als elements d&#8217;HTML5 a les versions d&#8217;Internet Explorer que no en tenen per defecte (\u00e9s a dir, en general, les versions 6, 7 i 8). Existeixen alternatives m\u00e9s sofisticades, como <a title=\"Modernizr: the feature detection library for HTML5\/CSS3\" href=\"http:\/\/modernizr.com\/\">Modernizr<\/a>, que permeten detectar quin suport per a caracter\u00edstiques d&#8217;HTML5 i CSS3 t\u00e9 el navegador en qu\u00e8 s&#8217;est\u00e0 visualitzant una p\u00e0gina web.<\/p>\n<p>Alguns &#8216;polyfills&#8217; a tenir en compte:<\/p>\n<ul>\n<li><a href=\"http:\/\/adobe-webplatform.github.com\/css-regions-polyfill\/\">CSSRegions.js<\/a> \u00e9s un polyfill experimental per oferir suport per a <a href=\"http:\/\/www.w3.org\/TR\/css3-regions\/\">regions CSS<\/a> als navegadors que no en tenen.<\/li>\n<li><a href=\"https:\/\/github.com\/doctyper\/flexie\">Flexie<\/a> dona suport <i>cross-browser<\/i> per al model de caixes flexibles (o <i>flexible box model<\/i>), tot i que fent servir una sintaxi antiga (<a title=\"Using Flexbox: Mixing Old and New for the Best Browser Support | CSS-Tricks\" href=\"http:\/\/css-tricks.com\/using-flexbox\/\">m\u00e9s informaci\u00f3<\/a>).<\/li>\n<li><a href=\"https:\/\/github.com\/Schepp\/CSS-Filters-Polyfill\">Polyfilter<\/a> pren la sintaxi oficial de <a href=\"https:\/\/dvcs.w3.org\/hg\/FXTF\/raw-file\/tip\/filters\/index.html\">filtres CSS<\/a> i la tradueix a diferents t\u00e8cniques equivalents segons el navegador sobre el qu\u00e8 estigui funcionant.<\/li>\n<li><a href=\"https:\/\/code.google.com\/p\/ie7-js\/\">ie7-js<\/a>, <a href=\"http:\/\/selectivizr.com\/\">Selectivizr<\/a> i <a href=\"http:\/\/css3pie.com\/\">CSS3 PIE<\/a> s&#8217;adrecen espec\u00edficament a versions antigues d&#8217;Internet Explorer i resolen for\u00e7a de les seves mancances respecte dels est\u00e0ndards m\u00e9s moderns.<\/li>\n<\/ul>\n<p>Un altre recurs a tenir en compte s\u00f3n els &#8216;hacks&#8217;, trampes que exploten inconsist\u00e8ncies en el maneig de determinades sent\u00e8ncies per part dels navegadors per tal de passar determinats fragments de CSS exclusivament a determinats navegadors. Una bona documentaci\u00f3 sobre el tema es pot consultar a <a title=\"Browserhacks\" href=\"http:\/\/browserhacks.com\/\">Browserhacks<\/a>.<\/p>\n<hr \/>\n<p><a href=\"http:\/\/adactio.com\/journal\/5964\/\">Dealing with IE <\/a> (Jeremy Keith, 9 de gener, 2013)<\/p>\n<h2>Quota de mercat<\/h2>\n<p><a title=\"Chrome hits 17-month low, Windows 8 still only creeping upward | Ars Technica\" href=\"http:\/\/arstechnica.com\/information-technology\/2013\/03\/chrome-hits-17-month-low-windows-8-still-only-creeping-upward\/\">Chrome hits 17-month low, Windows 8 still only creeping upward<\/a> (Ars Technica, 2 de mar\u00e7 de 2013. S&#8217;ha de tenir en compte, d&#8217;una banda, que es tracta d&#8217;un estudi de mercat, com sempre en aquests casos i, d&#8217;altra, que t\u00e9 en compte tot el planeta.)<\/p>\n<p><a href=\"http:\/\/www.sitepoint.com\/browser-trends-october-2014-back-work\/\">Browser Trends October 2014<\/a> (Sitepoint, octubre de 2014)<\/p>\n<p><a href=\"https:\/\/en.wikipedia.org\/wiki\/Usage_share_of_web_browsers\">Usage share of web browsers<\/a> (Wikipedia, 2018)<\/p>","protected":false},"excerpt":{"rendered":"<p>[Darrera actualitzaci\u00f3: 21\/10\/2018] Donada la immensa varietat de navegadors que existeixen en el mercat, \u00e9s extremadament complicat que una p\u00e0gina es vegi igual en tots ells. En ocasions, aix\u00f2 \u00e9s desitjable: en general no voldrem que una p\u00e0gina es vegi igual en un navegador &#8216;d&#8217;escriptori&#8217; que en la pantalla d&#8217;un m\u00f2bil, per\u00f2 en general voldrem, &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/multimedia.uoc.edu\/blogs\/htmlcss\/ca\/css\/cross-browser\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;&#8220;Cross-browser&#8221;&#8221;<\/span><\/a><\/p>\n","protected":false},"author":4,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3,4],"tags":[],"class_list":["post-118","post","type-post","status-publish","format-standard","hentry","category-css","category-html","entry"],"_links":{"self":[{"href":"https:\/\/multimedia.uoc.edu\/blogs\/htmlcss\/ca\/wp-json\/wp\/v2\/posts\/118","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/multimedia.uoc.edu\/blogs\/htmlcss\/ca\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/multimedia.uoc.edu\/blogs\/htmlcss\/ca\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/multimedia.uoc.edu\/blogs\/htmlcss\/ca\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/multimedia.uoc.edu\/blogs\/htmlcss\/ca\/wp-json\/wp\/v2\/comments?post=118"}],"version-history":[{"count":26,"href":"https:\/\/multimedia.uoc.edu\/blogs\/htmlcss\/ca\/wp-json\/wp\/v2\/posts\/118\/revisions"}],"predecessor-version":[{"id":471,"href":"https:\/\/multimedia.uoc.edu\/blogs\/htmlcss\/ca\/wp-json\/wp\/v2\/posts\/118\/revisions\/471"}],"wp:attachment":[{"href":"https:\/\/multimedia.uoc.edu\/blogs\/htmlcss\/ca\/wp-json\/wp\/v2\/media?parent=118"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/multimedia.uoc.edu\/blogs\/htmlcss\/ca\/wp-json\/wp\/v2\/categories?post=118"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/multimedia.uoc.edu\/blogs\/htmlcss\/ca\/wp-json\/wp\/v2\/tags?post=118"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}