IE 6 Blocker Skript

Avatar of Chris Coyier
Chris Coyier am

DigitalOcean bietet Cloud-Produkte für jede Phase Ihrer Reise. Starten Sie mit 200 $ kostenlosem Guthaben!

Haben Sie es satt, IE 6 zu unterstützen? Sind Sie bereit, ihn einfach abzuschalten? Ich mache Ihnen keinen Vorwurf. Ich bin generell der Meinung, dass die meisten Probleme, die Leute mit IE 6 haben, mit etwas Übung ziemlich leicht zu umgehen sind, aber das ist nicht immer der Fall, und ich finde, dass die JavaScript-Unterstützung für Entwickler noch problematischer ist.

Oft geht es einfach darum, wie man seine Zeit am besten verbringt. Wenn Sie wählen müssen zwischen dem Entwerfen und Codieren eines neuen Features Ihrer Website, das 80 % Ihres Publikums nutzen und genießen wird, oder dem Beheben von IE 6 Bugs für den 20 % (und schrumpfenden) Teil Ihres Publikums, würde ich mich für das neue Feature entscheiden.

Aber dann stellt sich die Frage, WIE Sie die Unterstützung für IE 6 einstellen wollen. Tun Sie einfach nichts und lassen Sie Layouts zerhacken und Funktionalitäten abbrechen? Ich würde sagen, das ist eine schlechte Idee. Wenn Sie die Unterstützung für IE 6 einstellen, tun Sie es mit Zuversicht und informieren Sie diesen Teil Ihres Publikums darüber, was es tun kann!

Hier kommt das IE 6 Blocker Skript ins Spiel. Mit ein wenig einfacher JavaScript-Browsererkennung und etwas jQuery können wir unsere IE 6 Unterstützung mit einer sehr klaren Nachricht einstellen.

Demo anzeigenDateien herunterladen

 

Unten werden wir detailliert beschreiben, wie es funktioniert und wie man es benutzt.

Einbindungen und Browsererkennung

Im <head>-Bereich der Website müssen wir sowohl jQuery als auch die Skriptdatei einbinden.

	 ...
	 <script type="text/javascript" src="jquery-1.2.6.min.js"></script> 
	 <script type="text/javascript" src="jquery.ie6blocker.js"></script> 
</head>

Das ie6blocker.js Skript führt die Browsererkennung in seiner ersten Zeile durch.

var IE6 = (navigator.userAgent.indexOf("MSIE 6")>=0) ? true : false;
if(IE6) {
   ... do stuff ...
}

Alternativ hätten wir unsere Browsererkennung direkt in der HTML-Datei mit einer bedingten Kommentar-Anweisung durchführen können.

<!--[if IE 6]>
	<script type="text/javascript" src="jquery.ie6blocker.js"></script> 
<![endif]-->

Da wir für unsere Technik jedoch JavaScript aktiviert benötigen, damit sie funktioniert, können wir genauso gut JavaScript die Erkennung durchführen lassen. Man könnte es auch beides tun...

Das jQuery

Nachdem wir IE 6 erkannt haben, werden wir mit jQuery neue Seitenelemente erstellen und auf der Seite einfügen. Das Ziel ist ein transparenter schwarzer Überzug für den gesamten Bildschirm (der die Website erkennbar, aber unbrauchbar macht). Darüber wird eine zentrierte Nachrichteneinblendung angezeigt, die die absichtliche fehlende Unterstützung der Website für IE 6 erklärt. Um den Schlag abzumildern, möchten Sie vielleicht eine alternative Möglichkeit anbieten, Ihre Inhalte anzuzeigen (z. B. den RSS-Feed des Blogs). Manche Leute können ihre Browser nicht aufrüsten, daher reicht eine Nachricht, die sie dazu auffordert, vielleicht nicht aus.

Zwei div-Elemente werden benötigt. Eines für den Überzug und eines für die Nachrichteneinblendung. Wir können sie mit CSS, Inhalt und allem direkt im jQuery JavaScript erstellen.

Hier ist der Überzug.

$("<div>")
	.css({
		'position': 'absolute',
		'top': '0px',
		'left': '0px',
		backgroundColor: 'black',
		'opacity': '0.75',
		'width': '100%',
		'height': $(window).height(),
		zIndex: 5000
	})
	.appendTo("body");

Mit einem modernen Browser könnten wir einfach top, right, bottom und left alle auf 0px setzen, aber IE 6 mag das nicht, also müssen wir top und left auf 0px setzen und die Breite auf 100%. Die Höhe ist etwas kniffliger. Sie auf 100% zu setzen funktioniert in IE 6 nicht. Wir könnten einfach eine wirklich große statische Zahl verwenden, aber das ist nicht schön und löst eine Scrollleiste aus, die vielleicht nicht notwendig ist. Viele "Lightbox"-Überzüge nutzen die proprietären CSS "Expressions", um die Fensterhöhe wie folgt zu ermitteln:

height: expression(document.body.scrollHeight > document.body.offsetHeight ? document.body.scrollHeight : document.body.offsetHeight + 'px'); 

Das wird hier nicht für uns funktionieren, weil jQuery diese Stile "inline" anwendet und sie nicht auf diese Weise berechnet werden. Glücklicherweise hat jQuery jetzt die Möglichkeit, die Fensterhöhe zu berechnen. (Die neueren Versionen von jQuery haben das alte Dimensions-Plugin integriert). Ein hoher z-index-Wert wird hier ebenfalls verwendet, um sicherzustellen, dass der Überzug über allen anderen Inhalten liegt.

Hier ist die Nachrichteneinblendung.

$("<div><img src='no-ie6.png' alt='' style='float: left;'/><p><br /><strong>Sorry! This page doesn't support Internet Explorer 6.</strong><br /><br />If you'd like to read our content please <a href='http://getfirefox.org'>upgrade your browser</a> or <a href='http://feeds.feedburner.com/CssTricks'>subscribe to our RSS feed</a>.</p>")
	.css({
		backgroundColor: 'white',
		'top': '50%',
		'left': '50%',
		marginLeft: -210,
		marginTop: -100,
		width: 410,
		paddingRight: 10,
		height: 200,
		'position': 'absolute',
		zIndex: 6000
	})
	.appendTo("body");

Beachten Sie, dass der gesamte Markup für die Nachrichteneinblendung direkt darin enthalten ist, in einem großen jQuery-Objekt. Das interessante CSS hier ist, dass wir die left- und top-Werte auf 50 % setzen und ihn dann mit negativen Margins zentrieren (die Theorie). Dann verwenden wir einen noch höheren z-index-Wert, um ihn über den Überzug zu legen.

Das sollte es gewesen sein! Ziemlich einfach, wirklich. Laden Sie die Dateien gerne herunter, ändern Sie sie nach Belieben und verwenden Sie sie für sich selbst.

Demo anzeigenDateien herunterladen

 

Hinweis: Ich plädiere nicht dafür, dass jede einzelne Website auf der Welt ihre IE 6 Unterstützung einstellt. Ich biete dies lediglich als Tutorial und Theorie an, wie dies geschehen kann. Sie sollten Ihre eigenen Entscheidungen auf der Grundlage Ihres eigenen Publikums treffen, ob Sie IE 6 unterstützen oder nicht.