Felix Riesterer: addEvent für bestimmte Tags immer und überall

Beitrag lesen

Liebes SorkenKind mech,

function xy(obj)

{
obj.style.overflow='scroll'; // chrome workaround
obj.style.height=obj.scrollHeight + 'px';
obj.style.overflow='hidden'; // chrome workaround
}

  
setzt voraus, dass man für jedes <textarea>-Element diese Funktion aufruft und das Elementobjekt als Argument übergibt. Wie Du schon geschrieben hast, keine "schöne" Lösung.  
  

> Dann habe ich die Idee gelesen, einfach einen allgemeinen Eventhandler zu bastelt, und bei klick oder Focus und passendem tag die Funktion aufzurufen ... nett, man hätte das gleiche prblem wie zuvor, plus dass man jedes element einmal aktivieren müsste, damit es anfänglich einmal korrekt dargestellt wird ...  
  
Hier irrst Du. Was, wenn das <body>-Element einen onclick-Handler hätte, der wissen will, in welchem Element dieses Event ursprünglich aufgerufen wurde? Das Klick-Event wird ja in der Baumstruktur bis zum höchstmöglichen Elternelement weitergereicht (event bubbling), wenn man das nicht aktiv im Programmcode verhindert.  
  
Du brauchst also eine Funktion, die das ursprünglich angeklickte Element daraufhin prüft, ob es eine <textarea> war. Danach handelst Du dynamisch:  
  
~~~javascript
document.body.onclick = function (e) {  
    var o;  
  
    e = e || window.event; // Krücke für IE  
    o = e.target || e.srcElement; // W3C | IE  
  
    if (o.tagName == "TEXTAREA") {  
        // ...  
    }  
}

Liebe Grüße,

Felix Riesterer.

--
ie:% br:> fl:| va:) ls:[ fo:) rl:| n4:? de:> ss:| ch:? js:) mo:} zu:)