Eine kleine Fuck IE6 PHP Klasse
Geschrieben von Gregor Nathanael Meyer um 19:5624 02 2009
Aktuell soll ja wieder mal der IE6 endlich sterben. In Norwegen sind einige große Nachrichtenseiten mit einer IE6-Warnung unterwegs und der IE6 Death March ist auch unterwegs. Ich verkaufe schon seit einiger Zeit IE6-Anpassungen nur noch als extra zu bezahlende Zusatzoption, wobei es bei mir dank semantisch sinnvollem Code hier nur um optische Feinheiten geht, die ich für entbehrlich halte. Wie auch immer: Bisher hat kein Kunde Aufpreis für den IE6 zahlen wollen. Geht doch.
Nun baue ich gerade meine Lifestream-Seite auf und befreie mich bei der Gelegenheit von jedem IE6-Mist. Meine Contentboxen hat der IE6 schlicht gar nicht angezeigt (wohl aber konnte man die unsichtbaren Links anklicken), so dass ich mich entschieden habe, dem IE6 und älteren Versionen einfach alle Styles vollständig wegzunehmen und stattdessen eine rote Alarm-Box einzublenden. Die Inhalte bleiben vollständig nutzbar, es sieht nur total scheiße aus. Sehr befriedigend, kann ich so den IE6-Nutzern doch etwas von der Hässlichkeit vermitteln, die dem IE6 innewohnt.
Zu diesem Zweck habe ich eine kleine statische PHP Klasse geschrieben, die ich hiermit gerne zur Verfügung stellen möchte. Wer Lust hat, kann die einfach für sich anpassen und in seine Projekte einbinden. Ich habe mich gegen eine clientseitige Lösung mit CSS und/oder JavaScript entschieden, weil ich "gute" Besucher nicht mit dem für sie sowieso unsichtbaren IE6-Code belasten wollte. Ich denke, das ist eine gute Idee.
Die Klasse ist recht simpel gestaltet und schreit geradezu danach, bei Bedarf verfeinert zu werden (mir reicht das erst mal so). Also in Kürze:
- Einbinden der Klasse, etwa indem man den Code direkt in sein Projekt kopiert oder als Datei abspeichert und mit
require_once('PFAD/fuck_ie6.class.php');einbindet. - Da die Klasse statisch ist, muss sie nicht instanziiert werden. Man ruft also die drei statischen Methoden wo man sie braucht.
- Folgende Methoden und Variablen stehen zur Verfügung:
fuck_ie6::is_ie6()gibttruezurück, wenn der Besucher mit einem IE4, 5 oder 6 unterwegs ist, sonstfalse. Praktisch, wenn man bestimmte Inhalte wie Stylesheets ohne Conditional Comments für diese Besucher aus- oder einblenden möchte. Im Prinzip ist das nur eine sehr simple RegEx.fuck_ie6::print_style()undfuck_ie6::print_alert_box()printen den Inhalt der Variablen$alert_styleund$alert_contentin Abhängigkeit vom Browser des Besuchers. Die beiden Methoden ersparen einem also nur die if-Abfrage mitfuck_ie6::is_ie6()im Template ein.- Die beiden Variablen
$alert_styleund$alert_contententhalten den Style und den Code, die für die Alarm-Box genutzt werden sollen. Hier finden Anpassungen an die eigenen Wünsche statt.
<?php
/**
* a very simple static class for sniffing Internet Explorer 6 and below
*
* can detect whether the user comes with an annoying IE (version 4,5 or 6)
* additionally holds content and styles for a red alert box
*
* @author Gregor Nathanael Meyer <Gregor [at] der-meyer.de>
* @license http://creativecommons.org/licenses/by-sa/3.0/de/ Creative Commons cc-by-sa
* @version 0.1 first release
*/
class fuck_ie6
{
/**
* the style block used for the alert box
* @static
*/
public static $alert_style = ' <style>
.errorBox {
background: #fbe3e4;
color: #8a1f11;
border: 2px solid #fbc2c4;
width: 80%;
padding: 25px;
margin: 0 auto;
font-size: 1em;
line-height: 1.3em;
}
</style>';
/**
* the HTML of the alert box
* @static
*/
public static $alert_content = '<p class="errorBox"><strong>Alarm:</strong> Offensichtlich bist Du mit einem alten Internet Explorer (6.0 oder älter) unterwegs. Da dieser Browser aus dem Jahr 2001 die auf dieser Seite genutzten modernen Webstandards nicht hinreichend unterstützt, habe ich das visuelle Beiwerk für Dich deaktiviert. Die Inhalte sind weiterhin erreichbar.</p>';
/**
* the IE6 detector function
* uses just a simple RegEx to read the UA string
* @static
*/
public static function is_ie6()
{
return preg_match('#^Mozilla/4.0 \(compatible; MSIE [456]#i', $_SERVER['HTTP_USER_AGENT']) ? true : false;
}
/**
* prints the style block in case of IE<=6
* @static
*/
public static function print_style()
{
if ( self::is_ie6() )
{
echo self::$alert_style;
}
}
/**
* prints the alert box content in case of IE<=6
* @static
*/
public static function print_alert_box()
{
if ( self::is_ie6() )
{
echo self::$alert_content;
}
}
}
Ein Beispiel könnt ihr bei meinem Lifestream sehen.
Kategorien : Web-hinteres-Ende
Trackbacks : 2 Trackbacks »
Short-URL: http://spackblog.de/619
Aufgenommen: Sep 15, 16:37
Aufgenommen: Okt 11, 11:21