bitte bitte helfen - finde den fehler nicht
nicnac
- javascript
0 Sönke Tesch0 Sven Rautenberg0 nicnac
hi,
ich habe jetzt eine browserweiche geschrieben, die im nn auch funktioniert. wie script zeigt, öffnet er bei 4.7 browsercheck.html und zum testen ab 4.75 sitemap.html
aber der ie, da läuft es einfach nicht...
(opera läuft als ie, da kommt auch nichts muß glaub ich auch nicht...
ich denke daß nur die neueren versionen allgemein im umlauf sind. früher werden wohl nicht so viele von opera gehört haben und die haben dann bestimmt auch schon ne neuere version ... oder irre ich mich da?
also, jetzt aber das script...
var ua = navigator.userAgent.toLowerCase()
var netscapebrowser = (ua.indexOf("mozilla")!=-1
&& ua.indexOf("compatible")== -1
&& ua.indexOf("opera")== -1)
var iebrowser = (ua.indexOf("msie")>-1)
function bestimme_vers() {return Math.round(parseFloat(navigator.appVersion) * 1000);}
version = bestimme_vers()
if(netscapebrowser){
var versionsnummer = version}
else if (iebrowser){
if (version > 4000){
versionsnummer = 3}
if (version == 4000 && ua.indexOf ("msie 5")== -1){
versionsnummer = 4}
if (version == 4000 && ua.indexOf("msie 5")> -1){
versionsnummer = 5 }
if (version == 4000 && ua.indexOf("msie 6")> -1){
versionsnummer = 6 }
}
if (netscapebrowser&&versionsnummer<=4740)
{
refWin=open("information/browsercheck.html","","width=440,height=340,screenX=20,screenY=20");
refWin.focus();
}
if (netscapebrowser&&versionsnummer>4740)//nur zum testen ob browserweiche funzt
{
siteWin=open("sitemap/sitemap.html","","width=540,height=450,screenX=20,screenY=20,resizable,scrollbars");
siteWin.focus();
}
if (iebrowser&&versionsnummer==3&&versionsnummer==4)
{
refWin=open("information/browsercheck.html","","width=440,height=340,screenX=20,screenY=20");
refWin.focus();
}
if (iebrowser&&versionsnummer==5&&versionsnummer==6)//nur zum testen ob browserweiche funzt
{
siteWin=open("sitemap/sitemap.html","","width=540,height=450,screenX=20,screenY=20,resizable,scrollbars");
siteWin.focus();
}
danke
nicnac
aber der ie, da läuft es einfach nicht...
ich denke daß nur die neueren versionen allgemein im umlauf sind.
früher werden wohl nicht so viele von opera gehört haben und die
haben dann bestimmt auch schon ne neuere version ... oder irre ich
mich da?
Sobald du diese Annahme machst, kommt garantiert jemand vorbei, bei dem diese Annahme nicht zutrifft [Murphy's Browserweichengesetz].
if (iebrowser&&versionsnummer==3&&versionsnummer==4)
if (iebrowser&&versionsnummer==5&&versionsnummer==6)
Na, was fällt dir auf?
soenk.e
Sobald du diese Annahme machst, kommt garantiert jemand vorbei, bei dem diese Annahme nicht zutrifft [Murphy's Browserweichengesetz].
stimmt... tja so ist das halt. war auch nur als frage gedacht, mit ner präzisen aussage wie deiner jetzt!
if (iebrowser&&versionsnummer==3&&versionsnummer==4)
if (iebrowser&&versionsnummer==5&&versionsnummer==6)
Na, was fällt dir auf?
leider nix...
ich glaub ich brauch jetzt nen schokoladen - nikolausi... *g*
ich habe es schon mit der layer methode versucht, sitze den ganzen tag an irgendwelchen scripten und jetzt brummt nur noch der schädel...
nicnac
so..
auch ohne schokolade...
ich denk mal du meintest das so oder?
if ((iebrowser&&versionsnummer==3)||(iebrowser&&versionsnummer==4))
denn jetzt geht es.
thanx
nicnac
ich denk mal du meintest das so oder?
if ((iebrowser&&versionsnummer==3)||(iebrowser&&versionsnummer==4))
So in der Art, ja. Den doppelten iebrowser hätte ich allerdings weggelassen, aber das ist wohl Geschmackssache. Hauptsache du zwingst keine Variable gleichzeitig 3 und 4 zu sein ;)
soenk.e
hi,
ich habe jetzt eine browserweiche geschrieben, die im nn auch funktioniert. wie script zeigt, öffnet er bei 4.7 browsercheck.html und zum testen ab 4.75 sitemap.html
Abhängig davon, wozu du eine Browserweiche benötigst, solltest du entsprechenden Code benutzen.
Fall 1: Browserunterscheidung zum Benutzen verschiedener Zugriffsmethoden auf Layer.
Ein simpler Dreizeiler unterscheidet die Typen:
ns4 = (document.layers)? true:false
ie4 = (document.all)? true:false
v6 = (document.getElementById)? true:false
Achtung: Mehrere Variablen können gleichzeitig wahr sein, die Layerroutine sollte das mit "if elseif elseif" berücksichtigen und nur jeweils einen Codeteil zum Zuge kommen lassen. Und diese Vorgehensweise ersetzt nicht die Prüfung auf das Vorhandensein weiterer Objekte, die man benutzt. Auch wenn die Variablen so einladend aussehen, sie sagen NICHT aus, daß man es mit Netscape 4, Internet Explorer 4 oder einem Browser Version 6 zu tun hat, sondern nur, daß der Browser die Objekte document.layers, document.all und/oder document.getElementById kennt.
Fall 2: Browserunterscheidung nach Hersteller, Versionsnummer und Plattform.
Nimm dazu einfach das "Ultimate client-side JavaScript client sniff" von Netscape. Damit kriegst du ganz sicher raus, was du für einen Browser hast. Wenn du das Script als externe Datei vor allen deinen Javascripten einbindest, muß der Browser weniger laden, und du machst weniger Fehler.
Anwendung: Im Prinzip nur dann, wenn es um herstellerspezifische Unterschiede geht, also z.B. verschiedene CSS für PC und Mac (Schriftgrößen unterschiedlich bei pt-Angaben).
Das Script gibts hier (zusammen mit ein paar umfangreichen und sehr wichtigen Zusatzinformationen): http://www.mozilla.org/docs/web-developer/sniffer/browser_type.html
- Sven Rautenberg
nochmals hi,
das habe ich versucht, reicht für meine fälle nicht aus...
ich krieg die seite einfach nicht unter 4.75 in nn optimiert... läßt budget und design nicht zu und zweiteres ist nicht von mir...
Ein simpler Dreizeiler unterscheidet die Typen:
ns4 = (document.layers)? true:false
ie4 = (document.all)? true:false
v6 = (document.getElementById)? true:false
Fall 2: Browserunterscheidung nach Hersteller, Versionsnummer und Plattform.
danke für die url...
aber noch mal von vorne anfangen?
ich schau sie mir mal gleich an.
nicnac