Wir portieren gerade eine größere Anwendung, die seit mehr als 5 Jahren ausschließlich für den Internet Explorer gepflegt wurde, auf die aktuelle Browser-Generation, d.h. Firefox, Opera und Safari. Das bedeutet vor allem auch viel Arbeit an bestehenden JavaScripts, da einerseits Microsoft oft Extrawürste gebraten (modal_dialog z.B.) und es andererseits den Entwicklern durch "weniger Strikte Beachtung der Regeln" auch leicht gemacht hat.
Dabei hat der Kollege vorhin eine interessante Entdeckung gemacht:
Internet Explorer und Opera verhalten sich bei document.getElementById() im Zweifelsfall nicht so, wie sie es sollten. Nämlich dann, wenn ein Element sowohl ein Name-Attribut, als auch eine ID besitzt.
Beispiel:
Value: 1, Name: Hallo1, ID: -
Value: 2, Name: Hallo1, ID: Hallo1
klick!
Das erwartete, und in unseren Augen einzig richtige, Ergebnis kann hier nur "2" lauten, da nur die zweite Checkbox die ID "Hallo1" besitzt - was auch richtig ist, da IDs schließlich "Identifier" sind - und die müssen eindeutig sein. Anders beim name-Attribut, das kann (und muss teilweise, etwa bei CheckBoxen) durchaus mehrfach vorkommen. Hier dürfte es aber eigentlich auch gar keine Rolle spielen, da ja nicht documentGetElementsByName() sondern eben documentGetElementById() verwendet wird.
Das Ergebnis sieht aber wie folgt aus:
- Firefox: 2
- Safari für Windows: 2
- Internet Explorer 7: 1
- Opera: 1
Meiner Meinung nach eindeutig ein Bug, der mir so bisher noch nicht bekannt war. Andere Meinungen?