Alexander (HH): Probleme mit dem dynamischen Hinzufügen eines hidden-Fields

Beitrag lesen

Moin Moin!

»» Ich meine mich zu erinnern, dass ein einfaches Try-Catch vollkommen ausreicht.

Ich vermeide try-catch soweit wie möglich und verwende lieber sowas:

if (/@cc_on !@/false) {  // IE

var a = document.createElement('<input type="hidden">');
}
else {
  a = document.createElement('input');
  a.type = 'hidden';
}

  
Das impliziert, dass die Conditional Comments und die erweiterte Form von document.createElement() immer gleichzeitig vorkommen. try-catch macht diese Annahme nicht und kommt auch mit Browsern klar, die sich hinsichtlich document.createElement() wie die aktuellen IEs benimmt, aber Conditional Comments nicht implementiert, oder umgekehrt.  
  
Wenn viele input-Elemente erzeugt werden sollen, kann man natürlich etwas optimieren. Zum Beispiel mit einer Funktion, die sich selbst ersetzt:  
  
~~~javascript
  
function createInputElementMS(theType)  
{  
    return document.createElement('<input type="'+theType+'">');  
}  
  
function createInputElementW3C(theType)  
{  
    var inp=document.createElement('input');  
    inp.type=theType;  
    return inp;  
}  
  
function createInputElement(theType)  
{  
    var inp,e;  
    try {  
        inp=createInputElementMS(theType);  
        window.createInputElement=createInputElementMS;  
    } catch (e) {  
        inp=createInputElementW3C(theType);  
        window.createInputElement=createInputElementW3C;  
    }  
    return inp;  
}  

(Aus dem Gedächnis, ich komm an den Code nicht mehr heran.)

Alexander

--
Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so".