Browsererkennung
Mischa
- javascript
0 Kai Lahmann0 W. Pichler0 xNeTworKx0 Ralph
0 Ed X0 Kai Lahmann0 Joachim0 Ed X0 Patrick Andrieu
0 Ralph
Hallo! Ich hab mal wieder ein kleines Problemchen:
Habe ein JS zur Browsererkennung gebastelt und verstehe nicht, warum es von allen Browsern falsch interpretiert wird!
--------------------------------------------------------------------
<script language="JavaScript">
<!--
browser = navigator.appName;
version = parseInt(navigator.appVersion);
if (browser == "Netscape" && version >= 6) version = "ok";
else if (browser == "Netscape" && version < 6) version = "nc";
else if (browser == "Microsoft Internet Explorer" && version >= 6)
version = "ie6";
else if (browser == "Microsoft Internet Explorer" && version >= 5)
version = "ie5";
else if (browser == "Microsoft Internet Explorer" && version < 5)
version = "ie";
else version = "else";
if (version == "ok") {
alert("Du verwendest als Browser den Netscape 6. \n Eine korrekte Darstellung kann deshalb nicht garantiert werden!");
location.href="index2.html";
}
if (version == "nc") {
alert("Sorry! \n Du verwendest einen Netscape-Browser der Version 5 oder tiefer. \n Die gewünschte Website kann deshalb nicht dargestellt werden! \n Du wirst daher auf die Homepage der Jahrgangsstufe 12\n der Lichtenbergschule Darmstadt weitergeleitet. \n\nWenn du die Seite trotzdem betrachten möchtest,\n benutze den Microsoft Internet Explorer oder den Netscape 6\n oder gib einfach folgende Adresse in das Adressfeld deines Browsers ein:\n http://www.spicken.de/abizeitung/1024_768/index2.html");
location.href="http://www.duck-soft.de/jahrgang12";
}
if (version == "ie6") {
location.href="index2.html";
}
if (version == "ie5") {
location.href="index2.html";
}
if (version == "ie") {
alert("Du verwendest als Browser den Microsoft Internet Explorer, Version 5 oder tiefer.\nEs ist dringend zu empfehlen, deinen Browser upzudaten auf Version 5, 5.5 oder 6!!!\nDie entsprechenden Downloads findest du unter http://www.microsoft.com/germany.\nNun aber viel Spaß auf der Homepage des AZ-Teams!!");
location.href="index2.html";
}
if (version == "else") {
alert("Du verwendest weder einen Microsoft- noch einen Netscape-Browser!\nEs können daher Unstimmigkeiten bei der Anzeige der Website auftreten!");
location.href="index2.html";
}
//-->
</script>
--------------------------------------------------------------------
Beim Internet Explorer 6 wird die Meldung, die eigentlich für den IE 4 und tiefer gedacht war ausgegeben:
Du verwendest als Browser den Microsoft Internet Explorer, Version 5 oder tiefer.\nEs ist dringend zu empfehlen, deinen Browser upzudaten auf Version 5, 5.5 oder 6!!!\nDie entsprechenden Downloads findest du unter http://www.microsoft.com/germany.\nNun aber viel Spaß auf der Homepage des AZ-Teams!!
Bei NS 6 wird die Meldung für NS 5 und tiefer ausgegeben:
Sorry! \n Du verwendest einen Netscape-Browser der Version 5 oder tiefer. \n Die gewünschte Website kann deshalb nicht dargestellt werden! \n Du wirst daher auf die Homepage der Jahrgangsstufe 12\n der Lichtenbergschule Darmstadt weitergeleitet. \n\nWenn du die Seite trotzdem betrachten möchtest,\n benutze den Microsoft Internet Explorer oder den Netscape 6\n oder gib einfach folgende Adresse in das Adressfeld deines Browsers ein:\n http://www.spicken.de/abizeitung/1024_768/index2.html
Opera wird mit dem Internet Explorer verwechselt - auch hier:
Du verwendest als Browser den Microsoft Internet Explorer, Version 5 oder tiefer.\nEs ist dringend zu empfehlen, deinen Browser upzudaten auf Version 5, 5.5 oder 6!!!\nDie entsprechenden Downloads findest du unter http://www.microsoft.com/germany.\nNun aber viel Spaß auf der Homepage des AZ-Teams!!
Was hab ich denn bitte falsch gemacht, dass mich gleich ALLE Browser im Stich lassen und promt etwas anderes ausspucken, als was ich gerne hätte???
Kann mir jemand helfen??
Gruß,
Mischa (Cpt. Karl)
hi
gibt's auch einen Browser, der mit deiner Seite zurechtkommt? Nach den Warnungen nicht.
Was hab ich denn bitte falsch gemacht, dass mich gleich ALLE Browser im Stich lassen und promt etwas anderes ausspucken, als was ich gerne hätte???
mach die Seite lieber so, dass es einfach überall geht. Diese Meldungs-Orgie ist ja abscheulich.
hi
mach die Seite lieber so, dass es einfach überall geht. Diese Meldungs-Orgie ist ja abscheulich.
Dem kann ich nur zustimmen.
Außerdem wiedersprechen sich die Meldungen:
Einmal heißt es:
Wenn du die Seite trotzdem betrachten
möchtest,\n benutze den Microsoft Internet Explorer oder den Netscape 6
Aber dann trotzdem:
Du verwendest als Browser den Netscape 6. \n Eine korrekte Darstellung kann deshalb nicht garantiert
werden!
Ciao
W. Pichler
Hallo! Ich hab mal wieder ein kleines Problemchen:
Du solltest besser gleich sagen:
alert("Wir sind hier auf Windows! Ich bin leider (noch?) nicht in der Lage, anständig zu programmieren. Wenn Ihr unseren geliebten, unsicheren M$$ IE 5 oder 6 nicht verwendet, geht doch zum Teufel!");
Dann wirst du wenigstens gleich richtig eingeschätzt.
Ciao
W. Pichler
Netscape-Browser der Version 5
klingt ja hoch interressant, hab leider noch nie davon gehört =)
Hallo, xNeTworKx
Das ist schon korrekt mit Netscape 5. Die offizielle Versionsnummer ist zwar 6, aber die "interne Nummer" ist halt 5.
Gruß
Hi,
Wie du vielleicht mitbekommen hast, ist im Forum in der vergangennen
Zeit auch über gefakte USER_AGENT-String diskutiert worden.
IMHO bringt dir die Navigator-abfrage nix. Frage also lieber nach
sinnvollen sachen:
if (document.layers) --> NN4x
if ((document.all) && (!document.getElementById)) --> IIIIIIIIE4
if ((document.all) && (document.getElementById)) --> IIIIIIIIE5+
if ((!document.all) && (document.getElementById)) --> mozilla, NN6
hier fehlt jetzt noch der Opera, must du halt noch etwas stöbern.
aber das ist wesentlich brauchbarer.
bye eddie
PS. Ich schließe mich der Meinung an, besser Seiten zu basteln die in
möglichst vielen Browsern gut aussehen, statt dem User zu melden was
nicht geht.
hi
IMHO bringt dir die Navigator-abfrage nix. Frage also lieber nach
sinnvollen sachen:
if (document.layers) --> NN4x
if ((document.all) && (!document.getElementById)) --> IIIIIIIIE4
if ((document.all) && (document.getElementById)) --> IIIIIIIIE5+
if ((!document.all) && (document.getElementById)) --> mozilla, NN6
hier fehlt jetzt noch der Opera, must du halt noch etwas stöbern.
aber das ist wesentlich brauchbarer.
Opera landet damit in der letzten Rubrik, konqueror unter IE5+
hi,
und hier mit opera...
// some known objects
var nc4 = !!(document.captureEvents && document.getElementById);
var nc6 = !!(document.captureEvents && document.documentElement);
var opera = !!(document.getElementById && !document.documentElement);
var ie = !!document.all;
var ie4 = !!(document.all && !document.documentElement);
var ie5Up = !!(document.all && document.documentElement);
var dom = !!document.getElementById;
hth + Gruss Joachim
Moin,
IMHO bringt dir die Navigator-abfrage nix. Frage also lieber nach
sinnvollen sachen:
if (document.layers) --> NN4x
if ((document.all) && (!document.getElementById)) --> IIIIIIIIE4
if ((document.all) && (document.getElementById)) --> IIIIIIIIE5+
if ((!document.all) && (document.getElementById)) --> mozilla, NN6
Opera landet damit in der letzten Rubrik, konqueror unter IE5+
schluck, soll das heißen Konquerer kennt das all-object?
bye eddie
Opera landet damit in der letzten Rubrik, konqueror unter IE5+
schluck, soll das heißen Konquerer kennt das all-object?
Opera kennt das all-Objekt auch, wenn er sich als IE5 verkleidet. :) Aber er kann nicht alles, was der IE kann, also ist das eher problematisch.
- Sven Rautenberg
Hallo Kai!
Opera landet damit in der letzten Rubrik, konqueror unter IE5+
Hmm.. Opera kennt aber document.all (wenn er sich als IE tarnt) oder? Jedenfalls führt er bei mir immer brav die if Abfrage...
Grüße,
Patrick
hi
Opera landet damit in der letzten Rubrik, konqueror unter IE5+
Hmm.. Opera kennt aber document.all (wenn er sich als IE tarnt) oder? Jedenfalls führt er bei mir immer brav die if Abfrage...
Opera nicht, aber konqueror :)
übrigens ändert sich meines wissens nach bei beiden durch die Tarnung nichts außer dem ID-String.
Moin!
Opera landet damit in der letzten Rubrik, konqueror unter IE5+
Hmm.. Opera kennt aber document.all (wenn er sich als IE tarnt) oder? Jedenfalls führt er bei mir immer brav die if Abfrage...
Opera nicht, aber konqueror :)
Doch, auch Opera. Der kennt unter dem Tarnmantel "IE 5" sowohl document.all, als auch "jscript".
übrigens ändert sich meines wissens nach bei beiden durch die Tarnung nichts außer dem ID-String.
Naja, bis eben auf die Kenntnis über gewisse Objekte im DOM. ;)
- Sven Rautenberg
Hi,
Doch, auch Opera. Der kennt unter dem Tarnmantel "IE 5" sowohl document.all, als auch "jscript".
übrigens ändert sich meines wissens nach bei beiden durch die Tarnung nichts außer dem ID-String.
Naja, bis eben auf die Kenntnis über gewisse Objekte im DOM. ;)
;) ?
ich find das eigentlich nicht so witzig, da es browser unabhängiges
Javascript extrem aufwändig macht. also :-(
bye eddie
hi
Doch, auch Opera. Der kennt unter dem Tarnmantel "IE 5" sowohl document.all, als auch "jscript".
ich hoffe, er kann dann nicht nur die Abfrage document.all beantworten, sondern kann auch die dazugehörigen Funktionen...
Moin!
Doch, auch Opera. Der kennt unter dem Tarnmantel "IE 5" sowohl document.all, als auch "jscript".
ich hoffe, er kann dann nicht nur die Abfrage document.all beantworten, sondern kann auch die dazugehörigen Funktionen...
Naja, zumindest wird das behauptet. Es ist aber kein IE 5 unter der Haube, sondern Opera. Das meiste wird funktionieren, der Teufel steckt vermutlich im Detail.
Ich würde bei Abfragen immer zuerst auf getElementById prüfen, und nur wenn das nicht geht (IE4, NS4) auf Alternativen ausweichen.
- Sven Rautenberg
Hallo, Mischa.
Es sind zuviele Fehler enthalten.
1. Netscape 6 identifiziert sich als 5, nicht als 6. Es isat halt die 5. Generation.
2. Der IE identifiziert sich als Version 4, egal ob 4, 5, oder 6.
3. Opera kann verschiedene Identifizierungen annehmen. Schau mal die Einstellungsmöglichkeiten durch.
Hier mal ein "Grundgerüst", den Opera hab ich rausgelassen:
<script language="JavaScript" type="text/javascript">
<!--
var browser = navigator.userAgent.toLowerCase();
var av = parseInt(navigator.appVersion);
var an = parseFloat(navigator.appVersion);
var moz = ((browser.indexOf('mozilla')!=-1) && (browser.indexOf('compatible')==-1) && (browser.indexOf('spoofer')==-1));
var ie = (browser.indexOf('msie')!=-1); // IE allgemein
var nnav = (moz && (av<5)); // Netscape bis 4.7
var nn6 = (moz && (av==5)); // NN 6 speziell
var ie5 = (ie && (av==4) && (browser.indexOf("msie 5.0")!=-1)); // IE 5.0
var ie6 = (ie && (av==4) && (browser.indexOf("msie 6.0")!=-1)); // IE 6.0
if(nn6)
...
else if(nnav)
...
else if(ie6)
...
else if(ie5)
...
else if(ie)
...
//-->
</script>
Die alerts mußt du schon selbst einfügen :-)
Sinnvoll wär es aber schon, wenn du die Seiten weitestgehenst so erstellst, daß du dir die Meldungen schenken kannst.
Gruß