Thomas Bandt

Über mich | Kontakt | Archiv

IE6 mit ASP.NET MVC in 5 Minuten blocken

Ich entwickle nun seit etwas über 10 Jahren Websites und erinnere mich gut an die Zeit, als der zunächst gefeierte Browser-Star Netscape in seiner Version 4.x für jeden Webmaster/Webdesigner zur Seuche wurde. Ähnlich sieht es nun seit einigen Jahren mit dem damals um Galaxien moderneren Internet Explorer 6 aus. Geschuldet ist diese Entwicklung Zweierlei:

  1. Der IE6 ging seinerzeit seine eigenen Wege und implementierte viele Standards gar nicht oder sehr eigenwillig.
  2. Microsoft war irgendwann der Meinung, die Weiterentwicklung lohne nicht mehr, und stellte sie folgerichtig auch ein. Es passierte also über viele Jahre nichts. Was man sich heute gar nicht mehr vorstellen kann, nahm erst mit dem Eintreten von Firefox in den Browsermarkt wieder eine Wende und bescherte uns vor einigen Jahren den IE7, der einen ersten Schritt in die richtige Richtung darstellte.

Nichtsdestotrotz gibt es immer noch eine Menge Menschen, die diesen Browser heute nutzen, obwohl es dafür eigentlich keine vernünftige Erklärung mehr gibt. Das hat sich zu einem echten Problem und Kostenfaktor in der Webentwicklung entwickelt - denn kann man heute für Firefox, Safari, Opera, Chrome und in Abstrichen für IE7 und IE8 weitestgehend homogene Lösungen auf Basis von XHTML, CSS und JavaScript entwickeln, ist das beim IE6 nicht ganz so einfach. Oft schreiben wir beispielsweise fast eigene Stylesheets und implementieren absurde Hacks, z.B. für die Darstellung von transparenten Grafiken.

Aktuell sind wir dabei unsere Firmenwebsite zu relaunchen. Dabei waren wir uns relativ schnell einig darüber, dass wir den IE6 dabei zum ersten Mal überhaupt komplett links liegen lassen wollen. Den ursprünglichen Gedanken, ihm einfach kein Stylesheet mehr zu geben, mussten wir aber fallen lassen, da wir dann doch zu viel mit Text-Grafiken und Scripts gearbeitet haben, so dass das Ergebnis ohne CSS in diesem Fall kaum brauchbar ist. Man erhält zwar, so wie es sein soll, die wesentlichen Informationen, aber für einen unwissenden Nutzer (=potentieller Kunde) ist der Schaden hierbei im Zweifel durch die schlechte Optik größer als unsere eingesparte Zeit an Mehrwert generiert.

Da aber auch der kurze Gedanke an eine Implementierung der erwähnten Hacks wieder verworfen wurde, habe ich es jetzt einfach noch radikaler gemacht: wer mit dem IE6 auf unsere neue Seite surfen wird, erhält einfach eine Fehlerseite, die ihm mitteilt, dass sein Browser nicht mehr unterstützt wird. Damit gewinnen wir diesen Nutzer zwar auch nicht als Kunden, er erhält aber auch nicht den Eindruck, dass wir zu blöd wären, unsere eigene Website richtig zu programmieren (weil sie bei ihm falsch dargestellt wird).

Dank ASP.NET MVC lässt sich das übrigens ganz einfach und geschwind implementieren:

  1. Man erstelle sich einen Basiscontroller, von dem alle anderen Controller ableiten.
  2. Man überschreibe das OnActionExecuted-Event und prüfe dort, ob der Browser IE6 heißt, und wenn ja, liefere eine entsprechende Fehler-View aus.

Der Code:

   1:  public class BaseController : Controller
   2:  {
   3:   
   4:      protected override void OnActionExecuted(ActionExecutedContext 
   5:          filterContext)
   6:      {
   7:          if (filterContext.HttpContext.Request.Browser.Type == "IE6")
   8:          {
   9:              filterContext.Result = IE6();
  10:              return;
  11:          }
  12:          base.OnActionExecuted(filterContext);
  13:      }
  14:   
  15:      public ActionResult IE6()
  16:      {
  17:          return View("Errors/IE6");
  18:      }
  19:   
  20:  }

Das Ergebnis kann man im obigen Bild sehen. Hart? Ja. Aber gerecht :-).

Disclaimer: das funktioniert natürlich nicht in jedem Szenario - man kann sich seine Nutzer eben nicht immer aussuchen, insbesondere dann nicht, wenn man im Kundenauftrag entwickelt.

Kommentare

  1. Sven schrieb am Sonntag, 6. September 2009 13:16:00 Uhr:

    Lieber Thomas,
    ich möchte mich nicht zu dem Code äußern, sondern zu der Idee den IE 6 (oder welchen Browser auch immer) zu blocken.
    Auch wenn ich die Gründe nachvollziehen kann, warum der IE 6 geblockt werden sollte halte ich es persönlich für eine seltsame Firmenpolitik von euch, dieses auf eurer Firmenwebseite zu tun.
    Ich weiß nicht, welches Klientel ihr bedient, viele große Unternehmen haben aber noch den IE 6 im Einsatz. Dieses liegt daran, dass viele Anwendungen eben auf den IE 6 optimiert worden sind, die auch nicht auf neuen Versionen laufen. Die Migration ist eben nicht mal eben so geschehen, sondern dauert nicht nur sehr lange sondern verschlingt mitunter Millionen.
    Du blogst ja selber sehr viel über Kunden(un)freundlichkeit. Nun stell dir mal vor ein potentieller Kunde, der vielleicht auch noch seine alte Anwendung für einen neuen Browser optimiert haben möchte, aus einem solchen Unternehmen stößt auf eure Webseite und bekommt diese Meldung präsentiert. Ich bezweifle stark, dass der Kunde weiter versuchen wird sich über euch zu informieren.

    Just my 50 cent,
    Sven



  2. Thomas schrieb am Sonntag, 6. September 2009 14:48:00 Uhr:

    Nur weil eine Intranet-Anwendung nur mit dem IE6 läuft, was schlimmm genug ist, heißt das nicht, dass der Admin seine Nutzer damit auch aufs Web loslassen muss - das ist imho völlig unverantwortlich. Und warum soll man diese katastrophal verfehlte Firmenpolitik selbst ausbaden?

    Aber davon abgesehen: irgendwo muss man einen Schlussstrich ziehen. Das war seinerzeit bei Netscape nicht anders. Der IE6 hat auf dieser Seite heute einen Anteil von ca. 3,5% erreicht - gering genug, um sich Zeit, Geld und Mühe endlich zu sparen.

    Dem Nutzer tut man damit sogar noch einen Gefallen, in dem man ihm das Bewusstsein schärft.


« Zurück  |  Weiter »