Opera 7.3 - 7.10
x-VieW
- javascript
0 MudGuard0 x-VieW0 MudGuard0 x-VieW
0 Chräcker Heller0 Sven Rautenberg
0 willie.de
Guten Morgen allerseits,
Ich habe eine Frage betreff Browsernamen.
Ich habe folgender JavaScript ausprobiert:
-----------
<Script Language="JavaScript" type="text/javascript">
<!--
document.write(navigator.appName)
document.write(navigator.appVersion)
//-->
</script>
-----------
Ich wollte der Name der Applikation und dessen Version herausfinden.
Bei NS und IE funktioniert problemlos, aber unter Opera 7.3 und
Opera 7.10 zeigt mir folgendes an:
Microsoft Internet Explorer4.0 (compatible; MSIE 6.0; Windows NT 5.0)
Ist es so richtig oder liegt da ein Fehler?
Ich danke für eure Hilfe
Gruss
x-VieW
Hi,
<Script Language="JavaScript" type="text/javascript">
<!--
document.write(navigator.appName)
Das ist der Fehler: das navigator-Objekt enthält nur nutzfreie Informationen
Bei NS und IE funktioniert problemlos, aber unter Opera 7.3 und
Opera 7.10 zeigt mir folgendes an:
Microsoft Internet Explorer4.0 (compatible; MSIE 6.0; Windows NT 5.0)
Denn wie Du hier siehst, steht da nichts drin, was mit dem Browser was zu tun hat.
Geh im Opera auf File - Quick Preferences und guck unter Identify As...
Ist es so richtig oder liegt da ein Fehler?
Richtig? Definiere richtig. Wenn Du irgendeine Unterscheidung aufgrund eines manipulierbaren und damit belanglosen Strings durchführen willst, ist es so richtig.
Wenn Du Browser wirklich zu erkennen versuchen willst, geh über die unterstützten Objekte (document.layers, document.all, usw.)
Details findest Du unter "Browserweiche" im Archiv...
cu,
Andreas
Hi Andreas,
Erst mal Danke für deine Tipps. Ich habe folgendes als Browserweiche
ausprobiert:
----------
if (navigator.appName.indexOf("Explorer") != -1)
{
window.location = "file/index_1/frame_1.html";
}
else
{
window.location = "file/index_2/frame_2.html";
}
----------
Es funktioniert einwandfrei, aber Opera geht auf index_1.html und
das will ich verhindern.
Liegt in meinem Script ein Fehler vor? wenn ja wo?
Ich danke dir für deine Hilfe
Gruss
x-VieW
Hi,
if (navigator.appName.indexOf("Explorer") != -1)
Liegt in meinem Script ein Fehler vor? wenn ja wo?
Ja, in der Verwendung des nutzlosen (weil manipulierbaren) Navigator-Objekts. Aber das schrieb ich ja schon.
cu,
Andreas
Hi All
Ich danke euch bis dann und schoene Ostern wünsche euch
Gruss
x-VieW
Hallo,
hast Du MudGuard's Antwort gelesen? Schau noch mal nach, was er zum Inhalt von navigator-Objekt sagt. (Tip: wenn einige hier nutzfrei schreiben, dann meint der Normalsterbliche "sinnlos" und wenn jemand "definiere xy" sagt, dann meint er "was verstehst Du (man)unter xy"...) - Dann wundert es mich nämlich, das Du das navigator-Objekt weiter verwendest und dann natürlich die gleiche Frage noch mal hast. Versuchs einfach noch mal mit seiner ersten Anwtort ,-)
Chräcker
Moin!
Es funktioniert einwandfrei, aber Opera geht auf index_1.html und
das will ich verhindern.
Also entweder funktioniert der Code einwandfrei - dann ist das Verhalten von Opera nicht zu beanstanden - oder der Code ist fehlerhaft.
Liegt in meinem Script ein Fehler vor? wenn ja wo?
Du benutzt das navigator-Objekt. Das ist der Fehler. Dort stehen Informationen drin, die der Benutzer vor allem im Opera ziemlich stark beeinflussen kann. In anderen Browsern wie z.B. Mozilla kann der Benutzer die Information dort sogar komplett beeinflussen. Deshalb wird dein Versuch, den Browser darüber zu erkennen, zum Scheitern verurteilt sein.
Du hast zwei Möglichkeiten: 1. Du unterscheidest die Browser nach den Javascript-Methoden, die deine Javascripte benötigen. Das ist typischerweise bei DHTML document.getElementById, document.all und document.layers, oder (zur Bildänderung z.B. bei Mouseover) document.images.
2. Wenn du kein weiteres Javascript einsetzt, solltest du lieber den Ansatz wählen und _eine_ Seite für _alle_ Browser machen.
- Sven Rautenberg
hallo,
ich betätige mich ja ungern als linksetzer... aber Stefan Münz' ideen sind ja gemeinhin nicht die schlechtesten http://selfhtml.teamone.de/dhtml/beispiele/dhtml_bibliothek.htm:
if(window.opera) ...
den rest bekommst du auch userAgent raus. ich mache es etwas anders (ist in etwas unelegant...):
if(navigator.userAgent.indexOf("Opera") != -1 && navigator.appVersion.substring(0,1) >= 4) browser = "Opera";
else if(navigator.userAgent.indexOf("Opera") != -1) browser = "oldOpera";
else {
... hier werden die anderen abgefragt
}
grüße!
willie.de
ss:{ zu:) ls:# fo:| de:] va:} ch:? sh:( n4:# rl:° br:> js:| ie:% fl:( mo:)
ps: ich brause, wie ich gerade bemerke, auf Opera 7.0 - ich denke, die neueren sind im userAgent nicht grundsätzlich besser getarnt.