Browserweiche deluxe
Gelesen bei AboutWebDesign.de
URL: http://www.aboutwebdesign.de/awd/content/1004214286.shtml
Wer verschiedene Layouts für verschiedene Browser programmiert, der will eine komfortable Möglichkeit haben, zur jeweils passenden Version weiterzuleiten. Unsere Browserweiche hilft dabei - sie fragt Browser, Browserversion, Bildschirmauflösung, Java-Unterstützung und Flash-Unterstützung ab. Am Ende des Scripts stehen einige Beispiel-Abfragen, die je nach Verwendungszweck erweitert werden müssen.
<script language= "JavaScript">
// Browser
ie = ((document.all) && (window.offscreenBuffering)) ? true : false;
nn = ((document.captureEvents) && (!document.getElementById)) ? true : false;
mz = ((document.getElementById) && (!document.all) && (document.documentElement)) ? true : false;
op = ((document.getElementById) && (navigator.userAgent.indexOf('Opera') != -1)) ? true : false
// Browser-Version
b_version = navigator.appVersion.substring(0,1);
// Bildschirm-Auflösung
r_small = (screen.width < 640) ? true : false; // Kleiner Bildschirm
r_640 = (screen.width >= 640) ? true : false; // Mindestens 640x480
r_800 = (screen.width >= 800) ? true : false; // Mindestens 800x600
r_1024 = (screen.width >= 1024) ? true : false; // Mindestens 1024x768
r_1280 = (screen.width >= 1280) ? true : false; // Mindestens 1280x1024
r_1600 = (screen.width >= 1600) ? true : false; // Mindestens 1600x1200
// Java?
javaok = (navigator.javaEnabled()) ? true : false;
// Abfragen
// z.B.: Weiterleitung zu einer Seite
if (ie && r_1280 && javaok && (b_version >= 4))
{
// IE, Auflösung größer als 1280x1024, Java an, Browserversion >= 4
document.location.href="xxyt.html";
}
if ((ie || nn) && r_800 && (b_version >= 3))
{
// IE oder NN, Auflösung größer als 800x600, Java wird nicht gecheckt, Browserversion >= 3
document.location.href="xxyt.html";
}
if (!(ie) && !(b_version >= 3))
{
// Kein IE und gleichzeitig Browserversion < 3
document.location.href="xxyt.html";
}
</script>
Es ist sinnvoll, hier noch einen <noscript>-Bereich einzubauen. Dort könnte der Anwender z.B. gebeten werden, manuell seine Systemkonfiguration auszuwählen. Gut ist dieser Ansatz jedoch nicht - viele Anwender wissen gar nicht, welche Bildschirmauflösung sie haben. Wir schlagen daher vor, bei ausgeschaltetem JavaScript Anwender auf eine Seite weiterzuleiten, die so kompatibel wie möglich ist - also optimiert auf 800x600, ohne Java und ohne Flash.
Flash ist in dieser Browserweiche noch nicht eingebaut. Es gibt zwar Möglichkeiten, auf Flash mit JavaScript zu prüfen. Das ist aus verschiedenen Gründen nicht gerade optimal: Auf vielen Systemen funktioniert diese Methode überhaupt nicht.
Ein anderer Ansatz - mit SSI - ist folgender: in die Startdatei wird eine kleine Flash-Datei eingebunden, die so schnell wie möglich zur auf Flash optimierten Version weiterleitet. Soll heißen: es wird nur dann weitergeleitet, wenn Flash funktioniert. Im HTML-Code wird ebenfalls eine Weiterleitung eingestellt, allerdings eine, die erst nach 10 Sekunden wirksam wird. Wenn Flash also aktiviert ist, dann wird die Weiterleitung innerhalb des Flash-Films aktiv. Wenn nicht, dann die HTML-Weiterleitung.
Zunächst sollten Sie sich also um den Flash-Film kümmern, der weiterleitet. Gute Artikel dazu gibt es von Macromedia oder auch von Flashworker.de.
Irgendwo müssen Sie also innerhalb Ihres Weiterleitungs-Films eine Weiterleitungs-URL eingeben. Setzen Sie hier die URL "weiche.shtml?flashok" ein. Vorausgesetzt, die die Weiche enthaltende Datei heißt auch "weiche.shtml", könnte der Code dann so aussehen. Ganz unten muss allerdings noch der passende Flash-Film mit Browserweiche eingebunden werden.
<html>
<head>
<META HTTP-EQUIV="Refresh" CONTENT="10;URL=weiche.shtml?noflash">
<script language= "JavaScript">
// Browser
ie = ((document.all) && (window.offscreenBuffering)) ? true : false;
nn = ((document.captureEvents) && (!document.getElementById)) ? true : false;
mz = ((document.getElementById) && (!document.all) && (document.documentElement)) ? true : false;
op = ((document.getElementById) && (navigator.userAgent.indexOf('Opera') != -1)) ? true : false
// Browser-Version
b_version = navigator.appVersion.substring(0,1);
// Bildschirm-Auflösung
r_small = (screen.width < 640) ? true : false; // Kleiner Bildschirm
r_640 = (screen.width >= 640) ? true : false; // Mindestens 640x480
r_800 = (screen.width >= 800) ? true : false; // Mindestens 800x600
r_1024 = (screen.width >= 1024) ? true : false; // Mindestens 1024x768
r_1280 = (screen.width >= 1280) ? true : false; // Mindestens 1280x1024
r_1600 = (screen.width >= 1600) ? true : false; // Mindestens 1600x1200
// Java?
javaok = (navigator.javaEnabled()) ? true : false;
// Flash
flash = false;
<!--#if expr="${QUERY_STRING} = 'flashok'" -->
flash = true;
<!--#endif -->
alert(flash);
// Abfragen
// z.B.: Weiterleitung zu einer Seite
<!--#if expr="${QUERY_STRING} != ''" -->
if (ie && r_1280 && javaok && (b_version >= 4) && flash)
{
// IE, Auflösung größer als 1280x1024, Java an, Browserversion >= 4, Flash an
document.location.href="xxyt.html";
}
if ((ie || nn) && r_800 && (b_version >= 3) && !(flash))
{
// IE oder NN, Auflösung größer als 800x600, Java wird nicht gecheckt, Browserversion >= 3, kein Flash
document.location.href="xxyt.html";
}
if ((!ie) && r_800 && (b_version >= 3))
{
// IE oder NN, Auflösung größer als 800x600, Java wird nicht gecheckt, Browserversion >= 3, Flash wird nicht gecheckt
document.location.href="xxyt.html";
}
<!--#endif -->
</script>
</head>
<body>
<!--#if expr="${QUERY_STRING} = ''" -->
<!-- Hier Flash-Film einbinden! -->
<!--#endif -->
</body>
</html>