Dajbych.net


Internet Explorer opět změní User-Agent řetězec

, 2 minuty čtení

Včera vyšlo nové ses­tavení Win­dows 10 pre­view, které ob­sahuje Inter­net Ex­plorer ma­jící celkem hodně z toho, co se připravuje pro IE 12. Pod­s­tat­nou novinkou je další změna v řetězci, který slouží v pro­tokolu HTTP pro iden­ti­fikaci proh­lížeče. Připomeňme, že IE 11 ode­bral com­pat­i­ble a MSIE. IE 12 půjde ještě dál a ode­bere Tri­dent. Naopak přidává Edge. Výsledek je takový, že něk­teré sys­témy rozpoz­nají IE 12 jako Chrome. Je to účel, pro­tože hodně vývo­jářů pro IE bloko­valo moderní tech­niky.

Jak tedy User-Agent string v In­ter­net Ex­ploreru na Win­dows 10 pre­view nyní vy­padá?

Mozilla/5.0 (Windows NT 6.4; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.143 Safari/537.36 Edge/12.0

Je to v pod­s­tatě ste­jný Uset-Agent řetězec, který používá Chrome, jen má na konci ještě přilepe­nou poznámku Edge/12.0.

Používejte feature detection

Zák­ladní prin­cip fea­ture de­tec­tion je nezjišťo­vat verzi proh­lížeče a na zák­ladě toho rozhod­nout, zda danou techniku pod­poruje. Správné je zjis­tit pod­poru dané techniky přímo.

HTML

V pří­padě tech­nik, ke kterým se přis­tupuje přes HTML, je to pří­močaré. Jako v pří­padě HTML5 videa:

<video src="video.mp4"> Aktualizuje si prohlížeč nebo si kupte novější zařízení. </video>

JavaScript

V tech­nikách přís­tup­ných přes JavaScript se pak používá de­tekce potřeb­ných me­tod:

function isCanvasSupported() { var elem = document.createElement('canvas'); return !!(elem.getContext && elem.getContext('2d')); }

CSS

Když se jedná o CSS, není to tak snadné. Je potřeba použít JavaScript. Prin­cip je ale ob­dobný, ten­tokrát se de­tekují vlast­nosti. Tento přík­lad zjišťuje pod­poru CSS Tran­si­tions:

function firstSupportedPropertyName(prefixedPropertyNames) { var tempDiv = document.createElement("div"); for (var i = 0; i < prefixedPropertyNames.length; ++i) { if (typeof tempDiv.style[prefixedPropertyNames[i]] != "undefined") return prefixedPropertyNames[i]; } return null; } transitionName = firstSupportedPropertyName(["transition", "msTransition", "MozTransition", "WebkitTransition", "OTransition"]); if (!transitionName) { // prohlížeč nepodporuje transitions }

Používejte responzivní design

Nevšíme­jte si User-Agent řetězce. Používe­jte re­sponzivní de­sign, přes­něji me­dia queries, konkrétně min-width. Pokud si s tím nevys­tačíte, máte k dis­pozici ještě screen.ori­en­ta­tion. Skutečně potře­bu­jete vědět, jestli má uži­va­tel tele­fon, nebo stolní počí­tač? Nepotře­bu­jete náhodou jen zjis­tit, jak je dis­plej široký a jestli má víc na šířku, nebo na výšku?