Gunnar Bittersmann: Internetexplorer

Beitrag lesen

@@dave:

nuqneH

meiner Meinung nach die eleganteste Möglichkeit auf unterschiedliche IE-Versionen zu reagieren ist das öffnende html-Tag durch folgendes Konstrukt zu ersetzen:

<!--[if lt IE 7]><html lang="de" class="no-js lt-ie9 lt-ie8 lt-ie7"><![endif]-->

<!--[if IE 7]><html lang="de" class="no-js lt-ie9 lt-ie8"><![endif]-->
<!--[if IE 8]><html lang="de" class="no-js lt-ie9"><![endif]-->
<!--[if gt IE 8]><!--><html lang="de" class="no-js"><!--<![endif]-->

  
Von Eleganz keine Spur. Verstoß gegen DRY: html-Tag mit @lang-Atrribut und womöglich weiteren Attributen (@id) und Klasse "no-js" wird etliche Male wiederholt.  
  
(IMHO ist die Klasse "no-js" auch völlig überflüssig.)  
  
  
Elegant ist ein [JavaScript-Einzeiler](http://forum.de.selfhtml.org/archiv/2012/1/t208553/#m1418873):  
  
`var ieversion = document.documentMode /*@cc_on || 7 @*/;`{:.language-javascript}  
  
Machen wir einen Zweizeiler draus:  
  
`if (ieversion) document.documentElement.className += " ie" + ieversion;`{:.language-javascript}  
  
(Und ja, ich bin mir der Problematik der Verfügbarkeit von JavaScript bewusst.)  
  
  

> Dann kannst du im CSS einfach über Klassen die gewünschten Versionen ansprechen, um alles kleiner IE8 zu bekommen  
  
Das kann man auch ganz einfach ohne Klassen mit '`*+hmlt`{:.language-css}' für IE 7 (und wenn’s denn noch sein muss mit '`* html`{:.language-css}' für IE < 7.  
  
Qapla'

-- 
Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.  
(Mark Twain)