X-UA-MakeCompatible

Door Little Penguin op woensdag 23 september 2009 00:00 - Reacties (7)
Categorie: WWW, Views: 6.477

Met de introductie van Internet Explorer 8 heeft Microsoft een nieuwe feature toegevoegd, namelijk de HTTP-header 'X-UA-Compatible'. Met deze header, waarvan overigens geadviseerd wordt om deze via het meta-element toe te voegen aan de broncode van de website, is het voor een webontwikkelaar mogelijk om de compatibiliteit van een site vast te pinnen op IE7 of om aan te geven dat de site altijd compatible is met de laatste versie van IE. (Naar mijn mening is deze HTTP-header niet direct een zegen voor het web of een webontwikkelaar die zich primair op de ontwikkeling van W3C-compliant websites toelegd - ik ben daar overigens niet de enige in, tweakers.net developer crisp heeft inmiddels ook het één en ander geschreven over deze header).

Wat men bij Microsoft niet voorzien had, dat is dat ook andere browserontwikkelaars wel eens van dez HTTP-header gebruik zou kunnen gaan maken. Er is wel gezinspeeld op gebruik van deze constructie door derden in hun eigen browser, maar dat is niet gebeurt.

Hoewel...
http://tweakers.net/ext/f/nzNtsjlvrBRAzEtDA9PNZEcH/full.png
Ziet dat er niet verdacht veel uit als IE, en is dat niet de CanvasPaint-site waar ik eerder over geblogd heb?

Deze constructie wordt nu ineens gepromoot door Google, maar dan niet om een bepaalde IE-versie te forceren. Nee, zij hebben gezocht naar een andere toepassing. Google zou Google niet zijn als zij deze toepassing ook niet zouden vinden:

HTML:
1
<meta http-equiv="X-UA-Compatible" content="chrome=1">



Op het eerste gezicht is er niets bijzonders aan dit stukje code te zien, maar er is wel degelijk een uitzonderlijke toepassing aanwezig. Deze code is namelijk helemaal niet bedoeld voor de Google Chrome browser, de code is namelijk bedoelt om gebruikt te worden in Internet Explorer. Nu is het niet mogelijk om met 1 regel een compleet andere render-engine in te bouwen, deze regel wordt dan ook geparst door recent uitgebracht beta-product van Google: Google Chrome Frame.

Met Google Chrome Frame, is het mogelijk om binnen de gebruikersinterface van IE één (of meerdere) tabs te hebben die gebruik maken van de Google Chrome technieken (WebKit+V8). Voor de gebruiker blijft het aanvoelen als de browser die men gewend geworden is, maar onderhuids is het voor de getoonde pagina veranderd in een moderne browser die (onder andere) voorzien is van ondersteuning voor SVG, het canvas-element en een sneller JavaScript-engine. Op de Google Chrome Frame ontwikkelsite staat overigens ook nog eens uitgelegd hoe men zo gebruiksvriendelijk mogelijk deze uitbreiding kan laten installeren.

Op dit moment zijn er nog diverse bekende kevers in de uitbreiding aanwezig, maar ik ga er vanuit dat deze snel geplet zullen worden. (Zo maakt men gebruik van de netwerk stack van de geopende IE, hetgeen mogelijk voor issues kan zorgen en verder zijn er wat kleine onvolkomenheden met downloaden via Google Chrome Frame. Ook is het nog niet mogelijk om te printen vanuit deze uitbreiding. Ook is het zinvol om IE na de installatie eerst te herstarten, anders werkt de meta-constructie niet - dit geldt in elk geval zeker voor IE7 en deze beta-versie).

In hoeverre men het voor elkaar krijgt om het aantal systemen waar de Flash-plugin op geïnstalleerd staat te evenaren is nog lastig te voorspellen. Google heeft wel een enorm bereik, maar of men gebruikers ook aan kan zetten tot het installeren van een extra uitbreiding is nog de vraag. Een snelle download-ervaring is dan wel belangrijk en men zal dus in de buurt moeten zien te komen van de 2MB die nodig is voor de Flash-plugin...

Verder is de uitbreiding alleen beschikbaar voor Internet Explorer, een groot probleem hoeft dit overigens niet te zijn, de andere 'grote' browsers (Mozilla Firefox, Opera, Apple Safari) hebben namelijk wel ondersteuning voor de genoemde technieken.

N.B. Zoals uit de screenshot te zien is, kun je het renderen door Google Chrome Frame ook forceren door cf: voor de URL te plaatsen - erg handig voor snel even testen van...