Hi,
navigator.javaEnabled ist keine Eigenschaft sondern eine Methode.
eine Methode, die man nicht ausführt, sondern nur überprüft, ist in dem Moment eine Eigenschaft - die runden Klammern fehlen. In Python kann man diese Dualität ganz besonders gut sehen: Python sieht alles, ob Objekt, Methode oder Variable, zunächst als Variable an - bis zur Verwendung.
Ich teste darum gegen null um festzustellen ob javaEnabled ein gültiges Methodenobjekt darstellt.
Wenn es nicht bekannt ist, kann JavaScript auch nicht ahnen, dass es eine Methode sein sollte - es ist daher undefiniert, nicht null.
Auch wenn du nicht gegen null testet wirft der Explorer diesen Fehler. auprobieren!!
Kann ich leider nicht, ich arbeite momentan an einem Mac mit Netscape 4. Aber Du hast schon recht: Ich glaub's nicht, bevor ich es selbst sehe :-)
Hier ebenfalls getElemantById ist eine Methode und keine Eigenschaft!
Siehe oben. Erst wenn JavaScript die Eigenschaft(!) kennt, kann es wissen, dass es eine Methode ist.
z.bsp. opera kann sich ja verschieden identifizieren.
Ja. Und der nächste Browser, der neu auf den Markt kommt, führt zur Notwendigkeit einer Erweiterung des Scripts, obwohl er nicht mehr oder weniger kann als bereits bekannte Browser.
Ich habe ein Crossbrowsermodul geschrieben das mir die ganzen Methoden und Eigenschaften und Fehler usw. der Browser kapselt.
Auch die, dass ich in meinem Mozilla keinen Zugriff auf das navigator-Objekt zulasse? Und: Wenn Du einen neuen Browser nicht mehr erkennst, obwohl Du ihn genauso handhaben kannst wie bereits bekannte, was nützt Dir dann ein gefangener Fehler?
Ich brauche also nur dieses eine Modul zu pflegen.
Meine Aussage ist: Schon dies ist unnötig.
Mit der untenstehenden Funktion hatte ich bisher noch nie Probleme.
Lucky you.
Ich kann mir nicht vorstellen wie ein Proxy oder sonst was die Eigenschaften des Navigator-Objektes im Browser auf meinem Rechner ändern soll.
Nein, das tut ein Proxy auch nicht. Das kann nur der Client selbst - und der _kann_ es auch.
Cheatah