COLOSSUS: navigator.appVersion vom Betriebssystem abhängig?

Beitrag lesen

Hallo zusammen.

Ich habe in meinem Javascript eine simple Browser-Weiche eingebaut:

  
if (navigator.appVersion.indexOf("MSIE 8.0") > -1)  
{  
   this.isIE8 = true;  
}  
else  
{  
    this.isIE8 = false;  
}

So weit, so gut. Das ganze steckt in einem WAR-Archiv als Webapplikation.

Wenn ich diese Applikation auf meinem eigenen PC ausführe (Win XP, 64bit), dann funktioniert die Weiche auch.

Wenn ich mit meinem IE8 die Seite aufrufe, kommt für "navigator.appVersion" als Antwort:

============
4.0 (compatible; MSIE 8.0; Windows NT 5.2; Win64; x64; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)

Spiele ich die WAR-Datei auf einen anderen Server (Windows Server 2008, 64bit) und surfe dort dann die Seite mit dem gleichen(!) IE8 an, kommt als Antwort:

============
4.0 (compatible; MSIE 7.0; Windows NT 5.2; Win64; x64; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)

Spiele ich die WAR-Datei auf einem Windows Server 2003 auf und rufe die Seite auch wieder mit dem gleichen IE8 an, kommt wieder die erste Ausgabe.

Problem: Warum wird mein Internet Explorer 8 mal als "MSIE 7.0" und mal als "MSIE 8.0" erkannt? Obwohl Applikation/Quellcode/Browser gleich sind?

Apache und Tomcat-Versionen sind auch überall identisch. Der für mich einzige noch offensichtliche Unterschied liegt im Betriebssystem.

Frage: Wie kann man das umgehen? :)

navigator.userAgent hilft genauso wenig als wenn ich den Parameter "User-Agent" aus dem HttpServletRequest auslese.

Gibt es vielleicht eine Javascript-Funktion, die erst ab dem IE8 interpretiert wird? Dann könnte ich über diesen Umweg eventuell die Browser-Weiche legen.

Wobei: Wenn der meinen Browser eh bereits als "MSIE 7.0" erkennt, würde er wohl dann auch die IE8-JS-Funktion ignorieren.

Sehr komische Sache, das.

Danke für Tipps.

COLOSSUS