Browsercheck

Liebe wer-weiss-was Gemeinde und Javascript-Experten,

ich habe ein Problem mit einem Javascript aus dem Jahre 2001.
Es ist ein Navigations-Menue mit vielen Funktionen zur Gestaltung und mit sich aufklappenden Sub-Menues.
Es funktioniert nur leider im Safari-Browser nicht. Der Safari-Browser
hat 2005 den MS-IE bzw. den Netscape als Standard-Browser bei Macintosh
abgelöst.
In der scriptinternen Dokumentation steht dazu folgendes:

Script checked and working with:
PC:
Netscape 4.03 - Netscape 4.04 -Netscape 4.08 - Netscape 4.73 - Netscape 6 - Netscape 6.01
Internet Explorer 5.0 - Internet Explorer 5.5 -Internet Explorer 6.0
MAC:
Netscape 4 - Explorer 5

und der Browsercheck ist folgender:

function lib_bwcheck(){ //Browsercheck (needed)
this.ver=navigator.appVersion; this.agent=navigator.userAgent
this.dom=document.getElementById?1:0
this.ie5=(this.ver.indexOf(„MSIE 5“)>-1 && this.dom)?1:0;
this.ie6=(this.ver.indexOf(„MSIE 6“)>-1 && this.dom)?1:0;
this.ie4=(document.all && !this.dom)?1:0;
this.ie=this.ie4||this.ie5||this.ie6
this.mac=this.agent.indexOf(„Mac“)>-1
this.opera5=this.agent.indexOf(„Opera 5“)>-1
this.ns6=(this.dom && parseInt(this.ver) >= 5) ?1:0;
this.ns4=(document.layers && !this.dom)?1:0;
this.bw=(this.ie6 || this.ie5 || this.ie4 || this.ns4 || this.ns6 || this.opera5 || this.dom)
return this
}
var bw=new lib_bwcheck() //Making browsercheck object

Da ich nun kein Javascript-Fachmann bin, wende ich mich an euch.
Gibt es eine Möglichkeit durch Ändern oder Hinzufügen einer oder mehrerer Zeilen das Script auch für den Safari-Browser funktionstüchtig zu machen?

Wer sich das Menue ansehen will, kann es hier tun:
www.globe-art.de

Ich möchte es nicht missen, mich schon vorab für eure Mühe zu bedanken!
Viele Grüsse … Harald

Es wäre interessant zu wissen, wie das bw-Objekt dann ausgwertet wird.
Ob der Besucher im Safari unterwegs ist, lässt sich mit dieser Abfrage feststellen:

if (navigator.userAgent.indexOf(‚Safari‘)>-1) …
bzw.
if (bw.agent.indexOf(‚Safari‘)>-1) …

Vermutlich lässt sich das ganze folgendermaßen umsetzen, ich garantiere aber für nichts: Ersetze

this.bw=(this.ie6 || this.ie5 || this.ie4 || this.ns4 || this.ns6 || this.opera5 || this.dom)

durch

this.safari = (navigator.userAgent.indexOf('Safari')\>-1);
this.bw=(this.ie6 || this.ie5 || this.ie4 || this.ns4 || this.ns6 || this.opera5 || this.dom) && !this.safari;

Das Skript könnte mit neueren Safari-Versionen aber funktionieren; dann sollte noch eine Überprüfung der Versionsnummer eingebaut werden.


hallo Titus,

vielen dank für die hilfe.

ich hatte das script bereits folgendermassen erweitert

function lib_bwcheck(){ //Browsercheck (needed)
this.ver=navigator.appVersion; this.agent=navigator.userAgent
this.dom=document.getElementById?1:0
this.ie5=(this.ver.indexOf(„MSIE 5“)>-1 && this.dom)?1:0;
this.ie6=(this.ver.indexOf(„MSIE 6“)>-1 && this.dom)?1:0;
this.ie4=(document.all && !this.dom)?1:0;
this.ie=this.ie4||this.ie5||this.ie6
this.mac=this.agent.indexOf(„Mac“)>-1
this.safari=this.agent.indexOf(„Safari“)>-1
this.safari2=this.agent.indexOf(„Safari 2“)>-1
this.opera5=this.agent.indexOf(„Opera 5“)>-1
this.opera9=this.agent.indexOf(„Opera 9“)>-1
this.ns6=(this.dom && parseInt(this.ver) >= 5) ?1:0;
this.ns4=(document.layers && !this.dom)?1:0;
this.bw=(this.ie6 || this.ie5 || this.ie4 || this.ns4 || this.ns6 || this.opera5 || this.opera9 || this.safari || this.safari2 || this.dom)
return this
}
var bw=new lib_bwcheck() //Making browsercheck object

und ein mac-user hat mir die funktionalität bestätigt.

ich werde aber auch nochmal deine zeile
this.safari = (navigator.userAgent.indexOf(‚Safari‘)>-1);
einfügen und testen.
schaden kanns ja nicht.
bis auf den einen oder anderen hakler funzt das navigationsmenue jetzt
ganz ordentlich, aber erst nachdem ich es in einen iframe gepackt habe.
ich habe es dann auch noch in verschiedenen variationen eingebaut, so
dass es mal rechts positioniert ist und nach links aufklappt und dann
als bottom-version, wobei es sich nach oben aufklappt.
zu sehen unter: www.globe-art.de

vielleicht ist ja ein mac-user präsent, der nochmal nachsehen kann ob
es funktioniert, und der mir dann bescheid gibt.

nochmals vielen dank,
gruss … harald

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]