Reinhard: Vergleich IE / Firefox

Hallo Leute,
vor einigen Monaten habe ich eine Anfrage geposted, in der ich mich gewundert hatte, daß ein JavaScript-Programm im IE fehlerlos läuft, im Firefox jedoch nicht. Nachdem ich nun wieder Zeit hatte, mich dem Problem zu widmen, bin ich letztlich doch auf die richtige Lösung gestoßen: der Firefox ist ein schöner Browser, aber zickig!

Hier meine Erfahrungen für die Leute, die so wie ich Anfänger im Programmieren sind:
Der Firefox nimmt die Regeln des DOM sehr genau, der IE ist dagegen fehlertoleranter. Wird z.B. in einem JacaScript-Programm ein Bild in der HTML-Seite mit dem Attribut "name=Bild1" referenziert (Beispiel: abfragen der URL), genügt im IE ein "Bild1.src" (der IE denkt sich seinen Teil ...), im Firefox muß es heißen "document.Bild1.src" (100%ig korrekt).
HTML-Tags können sowohl die Attribute "name" und "id" enthalten. Trägt das o.g. Bild zusätzlich eine "id=4711", so kann man es im IE entweder mit "Bild1.src" oder "4711.src" ansprechen. Man sollte meinen, daß im Firefox neben "document.Bild1.src" auch "document.4711.src" funktioniert. Falsch! Die id eines Tags erscheint im DOM nur indirekt: das Bild muß mit "document.getElementById("4711").src" angesprochen werden. Da manche Tags kein Attribut "name" haben (z.B. <span> hat nur eine "id") ist diese übertriebene Korrektheit etwas umständlich ...

Ich bin sicher, es gibt bestimmt noch mehr Unterschiede. Kennt jemand eine Seite, in der alle (oder möglichst viele) solcher Unterschiede beschrieben sind? Vielleicht auch die Unterschiede zu den echten Exoten (Opera, Safari)?

Gruß, Reinhard

  1. Hier meine Erfahrungen für die Leute, die so wie ich Anfänger im Programmieren sind:

    Das sind Erfahrungen, die seit erscheinen der Mozillabrowser bekannt sind, der IE hält sich nicht an die Regeln und versucht es vermeintlich einfacher zu machen, dadruch entstehen eine Menge Probleme und es ist in keinsterweise so, dass das was du beschreibst immer Vorteil ist.

    Der Firefox nimmt die Regeln des DOM sehr genau, der IE ist dagegen fehlertoleranter.

    Das ist eine positive Umschreibung für ein falsches Verhalten.

    Wird z.B. in einem JacaScript-Programm ein Bild in der HTML-Seite mit dem Attribut "name=Bild1" referenziert (Beispiel: abfragen der URL), genügt im IE ein "Bild1.src" (der IE denkt sich seinen Teil ...), im Firefox muß es heißen "document.Bild1.src" (100%ig korrekt).

    so und jetzt deklariere eine Variabel mit dem Namen 'Bild1' und versuche auf diese zu zugreifen, wer ist umständlicher?

    HTML-Tags können sowohl die Attribute "name" und "id" enthalten. Trägt das o.g. Bild zusätzlich eine "id=4711", so kann man es im IE entweder mit "Bild1.src" oder "4711.src" ansprechen. Man sollte meinen, daß im Firefox neben "document.Bild1.src" auch "document.4711.src" funktioniert. Falsch!

    richtig, und es sollte auch so sein.
    Nochmal das Beispiel von oben, deklariere eine Variabel mit der ID (die nicht mit Zahlen anfangen dürfen), dann schlägt der zugriff fehl auf das Bild zu (im gegensatz zum Beispiel mit dem Namen).

    Das bedeutet du hast eine der lästigsten Dinge des IE entdeckt, da dies zu einer Reihe von Problemen führt. Du musst mehr als üblich bei deinen Variabelnnamen aufpassen, da ständig Objekte zu Verfügung stehen wo sie gar nicht hingehören.

    Struppi.

    --
    Javascript ist toll (Perl auch!)
    1. Hmmmmm, vielleicht habe ich mich auch nur an die Unzulänglichkeiten des IE gewöhnt ... In Zukunft werde ich mir natürlich etwas mehr Selbstdisziplin angewöhnen müssen.
      Zu dem Problem mit den Variablen: da hast Du Recht, die ungenaue Definition macht tatsächlich ab und zu Probleme. Ich kenne Sprachen (z.B. Visual Basic) da gibt es ein Kommando "option explicit". Dann schreit das Programm, wenn man aus Versehen eine neue Variable deklariert (z.B. Tippfehler, bei JScript auch durch die lästige Groß/Kleinschreibung). Das gibt es leider in Skript-Sprachen (JScript, VBScript) nicht, oder?

      Wie gesagt, eigentlich finde ich den Firefox sehr schön. Vielleicht bin ich nur nicht so ein auf Genauigkeit achtender Mensch.
      Gruß, Reinhard

      Hier meine Erfahrungen für die Leute, die so wie ich Anfänger im Programmieren sind:

      Das sind Erfahrungen, die seit erscheinen der Mozillabrowser bekannt sind, der IE hält sich nicht an die Regeln und versucht es vermeintlich einfacher zu machen, dadruch entstehen eine Menge Probleme und es ist in keinsterweise so, dass das was du beschreibst immer Vorteil ist.

      Der Firefox nimmt die Regeln des DOM sehr genau, der IE ist dagegen fehlertoleranter.

      Das ist eine positive Umschreibung für ein falsches Verhalten.

      Wird z.B. in einem JacaScript-Programm ein Bild in der HTML-Seite mit dem Attribut "name=Bild1" referenziert (Beispiel: abfragen der URL), genügt im IE ein "Bild1.src" (der IE denkt sich seinen Teil ...), im Firefox muß es heißen "document.Bild1.src" (100%ig korrekt).

      so und jetzt deklariere eine Variabel mit dem Namen 'Bild1' und versuche auf diese zu zugreifen, wer ist umständlicher?

      HTML-Tags können sowohl die Attribute "name" und "id" enthalten. Trägt das o.g. Bild zusätzlich eine "id=4711", so kann man es im IE entweder mit "Bild1.src" oder "4711.src" ansprechen. Man sollte meinen, daß im Firefox neben "document.Bild1.src" auch "document.4711.src" funktioniert. Falsch!

      richtig, und es sollte auch so sein.
      Nochmal das Beispiel von oben, deklariere eine Variabel mit der ID (die nicht mit Zahlen anfangen dürfen), dann schlägt der zugriff fehl auf das Bild zu (im gegensatz zum Beispiel mit dem Namen).

      Das bedeutet du hast eine der lästigsten Dinge des IE entdeckt, da dies zu einer Reihe von Problemen führt. Du musst mehr als üblich bei deinen Variabelnnamen aufpassen, da ständig Objekte zu Verfügung stehen wo sie gar nicht hingehören.

      Struppi.

      1. Zu dem Problem mit den Variablen: da hast Du Recht, die ungenaue Definition macht tatsächlich ab und zu Probleme. Ich kenne Sprachen (z.B. Visual Basic) da gibt es ein Kommando "option explicit". Dann schreit das Programm, wenn man aus Versehen eine neue Variable deklariert (z.B. Tippfehler, bei JScript auch durch die lästige Groß/Kleinschreibung). Das gibt es leider in Skript-Sprachen (JScript, VBScript) nicht, oder?

        Der Firefox produziert auch Warnungen in der Javascript-Konsole. Auf Wunsch meckert der auch Dinge an wie uninitialisierte Variablen u.ä., da gibt es einen entsprechenden Schalter unter about:config.

        1. Hallo

          Zu dem Problem mit den Variablen: da hast Du Recht, die ungenaue Definition macht tatsächlich ab und zu Probleme. Ich kenne Sprachen (z.B. Visual Basic) da gibt es ein Kommando "option explicit". Dann schreit das Programm, wenn man aus Versehen eine neue Variable deklariert (z.B. Tippfehler, bei JScript auch durch die lästige Groß/Kleinschreibung). Das gibt es leider in Skript-Sprachen (JScript, VBScript) nicht, oder?

          Der Firefox produziert auch Warnungen in der Javascript-Konsole. Auf Wunsch meckert der auch Dinge an wie uninitialisierte Variablen u.ä., da gibt es einen entsprechenden Schalter unter about:config.

          Oder Extensions wie die "Web Developer Toolbar", die im übrigen, so sie scharf gestellt ist, selbst im SELFHTML-Forum mit Warnungen anspringt.

          Tschö, Auge

          --
          Die Musik drückt aus, was nicht gesagt werden kann und worüber es unmöglich ist zu schweigen.
          (Victor Hugo)
          Veranstaltungsdatenbank Vdb 0.1