Hi,
Hmm, welche Unterobjekte hat window.opera eigentlich? Sinnvolle? Überhaupt welche?
window.opera.addEventListener function addEventListener() { [native code] }
window.opera.removeEventListener function removeEventListener() { [native code] }
window.opera.defineMagicFunction function defineMagicFunction() { [native code] }
window.opera.defineMagicVariable function defineMagicVariable() { [native code] }
window.opera.buildNumber function Function() { [native code] }
window.opera.version function Function() { [native code] }
window.opera.collect function Function() { [native code] }
window.opera.errorIndex function Function() { [native code] }
window.opera.errorMessage function Function() { [native code] }
window.opera.postError function Function() { [native code] }
window.opera.openInSourceViewer function Function() { [native code] }
window.opera.clearErrorMessages function Function() { [native code] }
window.opera.SRPNumber function Function() { [native code] }
window.opera.isRegistered function Function() { [native code] }
(ermittelt per for(var elem in window.opera) ...)
Und BTW: Die Opera-Programmierer stellen auch ausdrücklich klar, daß in ihren UAs - auch und gerade in den gefakten - stets "Opera" vorkommt und vorkommen wird. Sofern der Nutzer also nicht über die von Opera ohnehin gebotenen Möglichkeiten den UA manipuliert (auch da greifen wohl wieder Molilys IMHO 100% richtigen Anmerkungen), solange ist also selbst die vom OP getroffene Abfrage "sicher".
Die ist insofern unsicher, da zwar dadurch sichergestellt ist, daß bei Operas immer "Opera" vorkommt, aber nicht, daß bei Nicht-Operas "Opera" nicht vorkommt.
cu,
Andreas
Warum nennt sich Andreas hier MudGuard?
Schreinerei Waechter
Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.