Probleme bei Browsererkennung

eddie_the_great

Grünschnabel
Hallo

Ich hab mir ein Script zusammengebastelt dass auf eine andere Site umleiten soll wenn kein Firefox 2.x verwendet wird.
Allerdings tut es einfach nichts und ich hab mittlerweile auch keine Idee mehr warum das so sein könnte.

Hier das Script:

Code:
function BrowserDetection(){
  this.appName = "unbekannt";
  this.appVersion = "unbekannt";
  this.isFF = false;

  this.UA = navigator.userAgent.toLowerCase();
	if(this.UA.search(/firefox/) != -1){
            this.appName = "Firefox";
            this.isFF = true;
    this.appVersion = parseFloat(/(firefox[^\s]*)/.exec(this.UA)[0].split("/")[1]);
    }
}


var objUA = new BrowserDetection();

window.onload = function(){
  if(objUA.isFF && (objUA.appVersion<2.0 || objUA.appVersion>2.99)){
    window.location.replace(http://localhost:8080/amiesp_db/WrongBrowserError.seam); 
  }else if(!this.objUA.isFF){
  	window.location.replace(http://localhost:8080/amiesp_db/WrongBrowserError.seam);
  }
}

Wär nett wenn da wer drüberschaut ob ich was übersehn oder falsch gemacht hab, bin leider kein javascript profi.

grüße
eddie
 
Hi,

sieht für mich soweit korrekt aus. Lediglich in deiner zweiten if-else-Bedingung ist ein this zuviel.

Statt
Code:
else if(!this.objUA.isFF)
dieses
Code:
else if(!objUA.isFF)

Ciao
Quaese
 
Moin,

nur mal rein Interessehalber....für FF2 gibt es mittlerweile keinen Support mehr, ich nehme mal an, alle anständigen Updater haben FF3.
Wozu also alles in die Pampa schicken, was keinen veralteten Browser hat? :-(
 
@Quaese: Danke, hat sich wohl unerlaubt da eingeschlichen und vor meinen prüfenden Blicken versteckt.

Hat leider nichts gebracht, es tut sich noch immer nichts.
Bin mittlerweile auch draufgekommen dass das Format der Versionsnummern nicht stimmt, is aber auch nicht die Ursache des Problems.
Was mich wundert is dass sich auch nichts tut wenn ich z.b. ein alert zum Testen in die erste Zeile schreib.

@Sven: Das mit FF2 is nicht auf meinem Mist gewachsen, das is ein Fh-internes Projekt dessen Entwicklung unter FF2 begonnen hat und bei anderen Browsern einige Features nicht funktionieren.
 
Hi,

habs testweise gerade hier mal laufen lassen - da funktioniert es wie gewünscht.

Von welcher ersten Zeile sprichst du? Sind noch andere Scripts enthalten? JavaScript ist eingeschaltet?

Ciao
Quaese
 
Nein, im originalscript is kein alert drin, hab das nur testweise reingeschmissen.

Dass es bei dir problemlos funkioniert is seltsam, bei mir tut sich nämlich nichts, habs mit 3 verschiedenen Browsern getestet.
Das Ganze is in einem jsf file eingebunden, aber damit sollts normal auch nichts zu tun haben.

edit: javascript is natürlich aktiviert.
 
Zuletzt bearbeitet:
Hier mal ein anderer Weg, der wohl sicherer sein sollte.

Ob es ein FF ist, prüfst du ja über den String "firefox" in der Browserkennung.

Abgesehen von dieser Browserkennung hat jeder Browser so seine Eigenheiten, an der man ihn erkennen kann(die Browserkennung selbst ist nicht vertrauenswürdig, da sie vom User geändert werden kann...die technischen Eigenheiten bleiben aber, wie sie sind).

FF1 verstand JS 1.6
FF2 verstand JS 1.7
FF3 versteht JS 1.8

angesichts dessen sollte man ihn gut erschnüffeln können, den <script>-Elemente können neben der Sprachangabe auch die Versionsangabe der Sprache enthalten(FF2 würde im Beispiel das Skript für JS 1.8 ignorieren ):
Javascript:
<script type="text/javascript" />
//FF prüfen
isFF=(navigator.userAgent.match(/firefox/i))?1:0;
</script>
<script type="application/javascript;version=1.7"/>
//FF2 versteht JS 1.7
if(isFF)isFF=2;
</script>
<script type="application/javascript;version=1.8"/>
//FF3 versteht JS 1.8
if(isFF)isFF=3;
</script>
<script type="text/javascript" />
alert(
			(isFF)
				?'Hier ist ein Firefox am Start, Version:'+isFF
				:'kein Firefox'
		 );
if(isFF!=2)
	{
		alert('Kein FF2, es kann umgeleitet werden');
	}
</script>

Habs jetzt allerdings nicht getestet :-)
 
Das Script funktioniert soweit, danke dafür.

Gibts eine Möglichkeit das Ganze in ein .js file zu stopfen? Schaut einfach sauberer aus :)

grüße
eddie
 
Jo, gibt es:
Code:
function isFF()
{
  if(typeof FFversion!='undefined')return FFversion;
  FFversion=(navigator.userAgent.match(/firefox/i))?1:0;
  FFversions= {
                3:1.8,
                2:1.7
              }
  if(FFversion)
  {
    for(var k in FFversions)
    {
        var n =  document.getElementsByTagName('script')[0];
        var s =  document.createElement('script');
        s.innerHTML = 'FFversion='+k+';';
        s.setAttribute('type','application/javascript;version='+FFversions[k]);
        n.parentNode.insertBefore(s,n);
        if(FFversion==k)return k;
    }return FFversion;
  }
}

//Test
alert(
  (isFF())
    ? 'Firefox Version:'+isFF()
    : 'kein Firefox'

)
(beachte, dass isFF jetzt eine Funktion ist....Rückgabewert ist die Version)
 

Neue Beiträge

Zurück