Opera 7 identifizieren
Joachim
- javascript
hi,
braeuchte mal ein paar Testergebnisse, ob das hier Opera 7 zuverlaessig identifiziert:
var op7 = !!(document.captureEvents && document.elementFromPoint);
alert(op7);
Vor allem Gegenprobe mit Opera 6 waere nett, da ich den grade nicht zur Hand habe, sowie _nicht_ PC-Plattformen...
Danke und Gruesse Joachim
Hi,
braeuchte mal ein paar Testergebnisse, ob das hier Opera 7 zuverlaessig identifiziert:
verzeih die Frage, aber: Aus welchem Grund willst Du den verwendeten Browser identifizieren? Ich sehe darin keinen Sinn.
Cheatah
hi,
verzeih die Frage, aber: Aus welchem Grund willst Du den verwendeten Browser identifizieren? Ich sehe darin keinen Sinn.
hab ich ja fast darauf gewartet ;-)
Ich habe gestern einen relativ ueblen Bug im Opera7 entdeckt (Opera5 ist nicht betroffen, 6 ungetestet): [pref:t=41104&m=224803] und eine Wuergaround gebastelt, den ich nicht allen anderen zumuten moechte.
Abgesehen davon brauche ich solche Abfragen fuer Dhtml-Geschichten oefters, wobei meist die Unterscheidung: Nc4x, IE4x und Domfaehig langt.
Gruesse Joachim
Hi,
Ich habe gestern einen relativ ueblen Bug im Opera7 entdeckt
ach so, verstehe.
Abgesehen davon brauche ich solche Abfragen fuer Dhtml-Geschichten oefters, wobei meist die Unterscheidung: Nc4x, IE4x und Domfaehig langt.
Nein, eine solche Unterscheidung brauchst Du nicht. Es ist Dir völlig egal, welchen Browser Du gerade vor Dir hast - Dich interessiert lediglich, was er kann.
Cheatah
hi,
Nein, eine solche Unterscheidung brauchst Du nicht. Es ist Dir völlig egal, welchen Browser Du gerade vor Dir hast - Dich interessiert lediglich, was er kann.
wisse mer doch, alter Haarespalter ;-)
denn:
wobei meist die Unterscheidung: Nc4x, IE4x und Domfaehig langt.
NC 4 steht fuer alle Browser die layer kennen,
IE 4 steht fuer alle Browser die _nur_ all kennen,
Dom steht fuer den Rest der Welt, und gehoert nach Koelle!
Gruesse Joachim
Hi,
Nein, eine solche Unterscheidung brauchst Du nicht. Es ist Dir völlig egal, welchen Browser Du gerade vor Dir hast - Dich interessiert lediglich, was er kann.
wisse mer doch, alter Haarespalter ;-)
*g* :-)
Das Problem ist nicht, dass _Du_ das weißt, sondern dass diese Unterscheidung auch für eventuelle Archivsucher wichtig ist.
NC 4 steht fuer alle Browser die layer kennen,
IE 4 steht fuer alle Browser die _nur_ all kennen,
Dann sag das doch einfach ;-)
Dom steht fuer den Rest der Welt, und gehoert nach Koelle!
Der Rest der Welt gehört nach Köln? Ich will aber nicht umziehen... :-)
Cheatah
hi,
var op7 = !!(document.captureEvents && document.elementFromPoint);
weiß nicht ob das wirklich so sicher ist.
Opera Browser erkennst du immer an window.opera
Was jetzt genau Opera 7 ausmacht weiß ich nicht. Versuch mal mit irgendeiner neuen DOM2-Methode:
http://www.opera.com/docs/specs/
zb:
var op7 = (window.opera && document.createCDATASection);
Christian
hi,
var op7 = (window.opera && document.createCDATASection);
warum denken alle dass "window.opera" beim 7er geht? Nix ist!
Aber grade habe ich noch mal alle window Eigenschaften getested, Opera 7.3 kennt "window.opera7" !
Haette ich auch frueher mal testen koennen:
<script language="javascript1.2">
var txt = "";
for (i in window) {
txt += i + " = " + document[i] + "<br>";
}
document.write(txt);
</script>
Gruesse Joachim
Hallo Joachim,
Du verwirrst mich:
warum denken alle dass "window.opera" beim 7er geht? Nix ist!
Er kennt es mindestens bei 7 Beta en, 7 Final en, 7.02 en und 7.03 de.
Aber grade habe ich noch mal alle window Eigenschaften getested, Opera 7.3 kennt "window.opera7" !
Ja, da geht's los - woher hast Du Opera 7.3? Die neueste Version ist AFAIK (und ich war gerade noch auf opera.com) die 7.03. Die kennt aber kein window.opera7.
Grüße,
Utz
hi,
Ja, da geht's los - woher hast Du Opera 7.3? Die neueste Version ist AFAIK (und ich war gerade noch auf opera.com) die 7.03. Die kennt aber kein window.opera7.
natuerlich 7.03. Also "alert(window.opera7)" gibt bei mir definitiv true! Ich habe uebrigens eine deutsche Version!
Also ist meine urspruengliche Abfrage moeglicherweise doch sicherer. Kansst Du die mal testen?
Gruesse Joachim
Hallo Joachim,
natuerlich 7.03. Also "alert(window.opera7)" gibt bei mir definitiv true! Ich habe uebrigens eine deutsche Version!
Ich hab auch ne deutsche 7.03. "alert(window.opera7)" ergibt "undefined", "alert(window.opera)" ergibt "[object Opera]". Mit
if (window.opera) alert("window.opera");
if (window.opera7) alert("window.opera7");
kommt das erste Alert, das zweite nicht.
Also ist meine urspruengliche Abfrage moeglicherweise doch sicherer. Kansst Du die mal testen?
Die ergibt bei mir "true" in Opera 7.0, 7.02 und 7.03, in Opera 5 "false". ABER: in Opera 6.05 auch "true" - taugt also nicht zur Unterscheidung zwischen 6 und 7.
Ich bin eh von solchen Browserunterscheidungen bei Opera abgekommen - nachdem irgendwelche x.04 oder was Versionen plötzlich Objekte kannte, die die x.03 noch nicht kannte, war mir das zu unsicher.
Ich nehme jetzt eine Variante, die den userAgent ausliest. Der kann zwar gefaked werden (und window.opera kann man auch in nem anderen Browser prototypisieren - aber das kann man ja mit jedem Objekt), ist also nur "mehr oder weniger" sicher, aber aus meiner Sicht noch das praktikabelste:
isOp7 = false;
if (window.opera) {
var sUserAgent = navigator.userAgent;
var sMatch = sUserAgent.match(/Opera[/ ]7/i);
if (sMatch) isOp7 = true;
}
Allerdings: wenn Dein 7.03 window.opera nicht kennt, klappt das auch nicht (meiner kennt's ja :-)
Grüße,
Utz
hi,
if (window.opera) alert("window.opera");
if (window.opera7) alert("window.opera7");
kommt das erste Alert, das zweite nicht.
das ist wirklich in hohem Maße seltsam. Ich bin mir sicher, keine Schlampigkeitsfehler gemacht zu haben. Ausserdem habe ich mir in einer Schleife alle window-objekte ausgeben lassen - so bin ich ueberhaupt auf opera7 gekommen.
Schade das nicht noch andere bei der Diskussion mitmachen. Da haette ich gerne mehr Werte.
Also ist meine urspruengliche Abfrage moeglicherweise doch sicherer. Kansst Du die mal testen?
Die ergibt bei mir "true" in Opera 7.0, 7.02 und 7.03, in Opera 5 "false". ABER: in Opera 6.05 auch "true" - taugt also nicht zur Unterscheidung zwischen 6 und 7.
Das tut mir fuer meine Zwecke jetzt nicht weh. Interessant wasere noch mal var op7 = !!(document.captureEvents && document.contains) und
var op7 = !!(document.captureEvents && document.contains && document.documentElement)zu testen.
Vielleicht kannst Du Dir diese Muehe nochmals machen.
Ich nehme jetzt eine Variante, die den userAgent ausliest.
Naja, aber wenn der 7er sich jetzt schon standardmaessig als IE meldet? Grundsaetzlich halte ich die Objektabfrage fuer bauchbar, da es mir nur um Faehigkeiten geht. Dies ist nur wegen eines speziellen Bugs ein Ausnahmefall.
Gruesse Joachim
Hallo Joachim,
Das tut mir fuer meine Zwecke jetzt nicht weh. Interessant wasere noch mal var op7 = !!(document.captureEvents && document.contains) und
var op7 = !!(document.captureEvents && document.contains && document.documentElement)zu testen.
Vielleicht kannst Du Dir diese Muehe nochmals machen.
Gerne, geht aber erst morgen - hier zu Hause hab ich keinen Opera 6.
Naja, aber wenn der 7er sich jetzt schon standardmaessig als IE meldet? Grundsaetzlich halte ich die Objektabfrage fuer bauchbar, da es mir nur um Faehigkeiten geht. Dies ist nur wegen eines speziellen Bugs ein Ausnahmefall.
Meine Variante funktioniert mit allen Browserkennungen, die man beim Opera 7 einstellen kann - da ist immer irgendwo "Opera 7" oder "Opera/7" mit im userAgent-String, sodass die Erkennung klappt, als was auch immer der Opera sich auszugeben versucht. Es klappt natürlich dann nicht mehr, wenn jemand manuell am userAgent gedreht hat. Aus meiner Sicht ist das aber vernachlässigbar - wer das tut wird wissen, warum mal das ein oder andere nicht so wie erwartet funktioniert (und es zwar auf mich schieben, damit aber kann ich leben). Dazu kommt, dass ich das nur verwende, um zusätzliche Features reinzunehmen - manuelle Bastler werden also seltenst überhaupt merken, dass da etwas nicht ist, was ihr Opera 7 eigentlich könnte.
Grüße,
Utz
Hi Joachim,
so siehts aus:
var op7 = !!(document.captureEvents && document.contains)
6.05: false
7.0: true
7.02: true
7.03: true
var op7 = !!(document.captureEvents && document.contains && document.documentElement)
6.05: false
7.0: true
7.02: true
7.03: true
Grüße,
Utz
hi,
so siehts aus:
wunderbar.
Aber - Du darfst mich Schlampe nennen!
Heute Morgen fiel mir als erstes auf, das ein Restcodeschgnipsel meine Ergebnisse verfaelscht hat. "opera7" war eine Fata Morgana. Die Opera-Welt ist also wieder in Ordnung. Ich hingegen kleide mich in Sack und Asche. Ist das peinlich =:-{
Nach ein paar Tests erscheint mir Deine Kombivariante aus window.opera und userAgent auch am Sinnvollsten. Ich bin bekehrt. Reumuetig.
Danke /Sorry Joachim