05 Jan
2006

Mit JavaScript DOM-Events manuell auslösen

 

Nutzt man zum binden von JavaScript Funktionen an HTML Elementen nicht das wohlbekannte Konstrukt

<select id="auswahl" onchange="machwas()" /> 

sondern die modernere Variante des (DOM-Event Modell  ( z.B. Firefox)  oder attachEvent  (nur Internet Explorer), die z.B. den Vorteil hat dass man mehr wie eine Funktion an das Event binden kann. So büßt man jedoch eine einfache Möglichkeit ein dieses Event auch per JavaScript manuell auszulösen.

var o = document.getElementById('auswahl'); 
o.onchange(); 

Funktioniert dann nicht mehr, jedoch bietet das DOM-Event Modell auch da eine Möglichkeit, natürlich wieder Browserspezifisch. Mit einer kleinen Hilfsfunktion ist dies jedoch auch sehr einfach möglich.

function raiseEvent (eventType, elementID)
{ 
    var o = document.getElementById(elementID); 
    if (document.createEvent) { 
        var evt = document.createEvent("Events"); 
        evt.initEvent(eventType, true, true); 
        o.dispatchEvent(evt); 
    } 
    else if (document.createEventObject) 
    {
        var evt = document.createEventObject(); 
        o.fireEvent('on' + eventType, evt); 
    } 
    o = null;
} 

Um nun ein Event manuell auszulösen (feuern) macht man nur noch folgendes

raiseEvent('change', 'auswahl');

Und schon werden alle dem Element-Event zugeordneten Funktionen aufgerufen.


Der Eintrag ist mir etwas Wert
 

Feedback

# re: Mit JavaScript DOM-Events manuell auslösen

left by Waldemar L. at 9/16/2008 9:58 AM Gravatar
Eine Funktion dieser Art habe ich bereits seit Ewigkeiten gesucht. Vielen Dank für den Beitrag!
Comments have been closed on this topic.