Rolf B: Javascript Spezialwissen...

Beitrag lesen

Hallo alle,

Onkel Rolfs Plauderstunde…

<html>
<body>
   <form name="foo">
   </form>

   <script language="javascript">
      var foo1 = document.all("foo");
      var foo2 = document.forms("foo");
   </script>
</body>
<html>

Vorausgesetzt, dass dieses HTML-Fragment im Internet Explorer 4 landet - was ist daran technisch falsch (HTML Gestaltungsvorschriften haben damals eh keinen interessiert)?

Und was, wenn es in einem Browser von heute landet?

.

.

.

.

.

.

.

.

Antwort:

  • Im IE4 nichts 😖.
  • Heutige Browser ignorieren language und brechen bei forms("foo") ab.

Das language-Attribut war im IE 4 sinnvoll, weil er auch VBScript konnte.

Und document.all(x) tut das gleiche wie document.all[x]. Weil in der Zeit vor DOM Level 1 document.all[x] die Kurzform von document.all.item(x) war und es üblich war, thing.item(x) durch thing(x) abzukürzen. Weshalb im IE4 auch document.forms("foo") funktioniert hat. Sagt Onkel Claude. In Chrome funktioniert es mit forms jedenfalls nicht, mit all aber schon. Weil die ECMAScript-Spec das so vorschreibt!!!1!elf!!

Warum stößt mir das gerade auf? Weil ich bei github in core-js herumstöbere, mir die isCallable Helperfunktion anschaue und mich wunderte, warum sie für document.all true meldet. 😭

Rolf

--
sumpsi - posui - obstruxi