Utz: Opera 7 identifizieren

Beitrag lesen

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