Kornblume mit Hummel

Javascript Fehler: This command is not supported

Folgender Codeschnipsel läuft einwandfrei in gängigen Browsern:

<html>
 <head>
  <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/prototype/1.7.2.0/prototype.js"></script>
 </head>
 <body>
  <div id="mammal"></div>
  <script type="text/javascript">
   var input = $('mammal').appendChild(document.createElement("input"));
   input.setAttribute("name", "user_id");
   input.setAttribute("type", "hidden");
   input.setAttribute("value", 4711);
  </script>
 </body>
</html>

Nur der Internet Explorer quittiert seinen Dienst mit folgenden Fehler:

Message: This command is not supported.
 Line: 10
 Char: 4
 Code: 0
 URI: https://localhost/test.html

Was also ist los damit das Attribute “type” einfach neu zu setzen?

Ändere ich den Code wie folgt indem das input-Element erst nach der vollständigen Erzeugung an das DIV angehangen wird läuft es auch im IE:

<html>
 <head>
  <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/prototype/1.7.2.0/prototype.js"></script>
 </head>
 <body>
  <div id="mammal"></div>
  <script type="text/javascript">
   var input = document.createElement("input");
   input.setAttribute("name", "user_id");
   input.setAttribute("type", "hidden");
   input.setAttribute("value", 4711);
   $('mammal').appendChild(input);
  </script>
 </body>
</html>

Was also ist los hier?

Im IE ist das INPUT-Element bereits im Dokument verankert und vom Typ “text” definiert und durch anhängen zu Beginn des Codes bereits im Dokument verankert. Eine Änderung des Typs ist somit ab diesem Zeitpunkt nicht mehr möglich.


Hat Dir mein Beitrag gefallen?

Unterstütze meine Arbeit und werde noch heute Patreon!

Veröffentlicht von

Sebastian

Als Softwareschmied entwickelt Sebastian seit zwanzig Jahren Individualsoftware mit den Schwerpunkten PHP und MySQL auf diversen Linux-Systemen. Er hat eine pfiffige Frau sowie drei quirlige Söhne, fährt gerne Fahrrad und liebt handwerkliche Arbeiten die im häuslichen Umfeld so anfallen.