Eigene Objekte in Javascript

Die Definietion von eigenen Objekten in JavaScript alla

var myObject = {
  eigenschaft:"",
  methode: function(){
    ...
  }
}

ist eine tolle Sache. Insbesondere wenn aber die Objekte grösser und komplexer als obiges werden kann dies zu Problemen führen, für die der Internet Explorer besonders anfällig ist. So sagt er zum Beispiel das Object ist undefined. Eine mögliche Ursache kann ein ‚,‘ zu viel sein. Zwischen den äussersten geschweiften Klammern werden variablen und Funktionen aufgelistet. Nach dem letzten „Listeneintrag“ darf kein ‚,‘ folgen. Weiters zeigt sich, dass der IE bei grösseren Objekten in oben beschriebener schreibweise das Objekt ebenfalls nicht kennt. Hier hilft es, das Objekt etwas anders zu definieren:

var myObject = {
  eigenschaft:"",
  methode: function(){
    ...
  }
}
myObject.methode2 = function(){
...
}
myObject.methode3 = function(){
...
}

Beim dynamischen Erstellen von Knoten habe ich zudem festgestellt, dass der IE gewisse Zeichenfolgen als geschützte Zeichenketten behandelt:

class = document.createAttribute('class');

ist zwar zulässig, führt jedoch im IE zu einem Abbruch; für add trift selbiges zu. Es kann auch vorkommen, dass der IE ein Attribut Knoten einem Knoten nicht zufügen will. Dies lässt sich umgehen indem man statt:

size = document.createAttribute('size');
size.nodeValue='100';
input.setAttributeNode(size);
name = document.createAttribute(document.createAttribute('size'));
name.setAttribute('size','100');

verwendet.
Versucht man einen Knoten mit einem Event-Listener dynamisch zu generieren,

<input id="esrscan" class="xg" onkeydown="listenEnter(event);" name="ESRSCAN" size="100" type="text"/>

Wird die Methode im IE nicht ausgeführt. Hier hilft nur, den Code-Block bereits im HTML-Code zu halten und das Element mittels

document.forms[0].elements["ESRSCAN"].display="none";

verstecken. Anstelle des generieren kann das Element dann eingeblendet werden ( Setzte das display attribute auch ‚block‘).
Eine Ausführliche Anleitung zum erstellen von eigenen Objekten in JavaScript ist bei SelfHTML zu finden.

Schreibe einen Kommentar