Dartrax: Event mit Parameter in Java auslösen/Tastendruck auslösen

Hi,
wie kann ich mit Javascript in einer HTML-Seite ein Event auslösen?

Es geht dabei um ein INPUT type=text, es soll das onKeyDown-Event ausgelöst werden. Dabei soll im pEvtObj-Parameter der Tastaturkey übergeben werden.

Entweder kann ich das Event direkt irgendwie auslösen oder kann ich einen Tastendruck an das Input schicken, sodass es indirekt ausgelöst wird?

Dartrax

  1. Hallo,

    wie kann ich mit Javascript in einer HTML-Seite ein Event auslösen?

    Es geht dabei um ein INPUT type=text, es soll das onKeyDown-Event ausgelöst werden. Dabei soll im pEvtObj-Parameter der Tastaturkey übergeben werden.

    Entweder kann ich das Event direkt irgendwie auslösen oder kann ich einen Tastendruck an das Input schicken, sodass es indirekt ausgelöst wird?

    Wozu hast du das denn vor? Wir sollten uns vielleicht eine andere Herangehensweise überlegen, denn diese Aufgabenstellung lässt nur unter Vorbehalten lösen.

    Das manuelle Auslösen von Events sieht DOM 2 Events vor. Erst DOM 3 Events beschäftigt sich zudem mit Keyboard-Events, also Tastendrücken, welche in DOM 2 Events ausgespart wurden. Das Problem ist, dass die Browserunterstützung bei DOM 2 Events diesbezüglich bereits mies ist. Mozilla kann z.B. immerhin initMouseEvent, Opera 7 ebenfalls. Bei DOM 3 Events sieht es noch schlechter aus. Hier wäre ungefähr folgendes gefragt, wenn ich mich nicht irre:

    eingabefeld=document.getElementById('eingabefeld'); // mit <input ... id="eingabefeld">
    meinevent=document.createEvent('KeyboardEvents');
    meinevent.initKeyboardEvent('keydown', true, true, window, 'U+0041', 1, '');
    eingabefeld.dispatchEvent(meinevent);

    Dies sollte einen (on)keydown-Event erzeugen, ein Druck der A-Taste. Aber kein mir bekannter Browser versteht dies.

    Der MSIE hat eine eigene, nicht standardisierte Methode, um Events zu erzeugen und an bestimmten Elementen auszulösen:

    eingabefeld=document.getElementById('eingabefeld'); // mit <input ... id="eingabefeld">
    meinevent=document.createEventObject();
    meinevent.keyCode=97;
    eingabefeld.fireEvent('onkeydown', meinevent);

    Dies wäre beispielsweise ein simulierter Tastendruck der A-Taste. Wenn vorher ein Event-Handler für eingabefeld definiert wurde (oder für ein Elternelement, der Event steigt ja bei der Verarbeitung normalerweise auf), würde dieses ausgeführt und window.event.keyCode hätte den Wert 97. Der Event wird aber nur simuliert, allein dadurch taucht im Eingabefeld noch kein »a« auf. Dazu müsste wie gehabt mit eingabefeld.value gearbeitet werden.

    Mathias

    1. Dankeschön, das funktioniert wunderbar :-)

      Dartrax

      Hallo,

      wie kann ich mit Javascript in einer HTML-Seite ein Event auslösen?

      Es geht dabei um ein INPUT type=text, es soll das onKeyDown-Event ausgelöst werden. Dabei soll im pEvtObj-Parameter der Tastaturkey übergeben werden.

      Entweder kann ich das Event direkt irgendwie auslösen oder kann ich einen Tastendruck an das Input schicken, sodass es indirekt ausgelöst wird?

      Wozu hast du das denn vor? Wir sollten uns vielleicht eine andere Herangehensweise überlegen, denn diese Aufgabenstellung lässt nur unter Vorbehalten lösen.

      Das manuelle Auslösen von Events sieht DOM 2 Events vor. Erst DOM 3 Events beschäftigt sich zudem mit Keyboard-Events, also Tastendrücken, welche in DOM 2 Events ausgespart wurden. Das Problem ist, dass die Browserunterstützung bei DOM 2 Events diesbezüglich bereits mies ist. Mozilla kann z.B. immerhin initMouseEvent, Opera 7 ebenfalls. Bei DOM 3 Events sieht es noch schlechter aus. Hier wäre ungefähr folgendes gefragt, wenn ich mich nicht irre:

      eingabefeld=document.getElementById('eingabefeld'); // mit <input ... id="eingabefeld">
      meinevent=document.createEvent('KeyboardEvents');
      meinevent.initKeyboardEvent('keydown', true, true, window, 'U+0041', 1, '');
      eingabefeld.dispatchEvent(meinevent);

      Dies sollte einen (on)keydown-Event erzeugen, ein Druck der A-Taste. Aber kein mir bekannter Browser versteht dies.

      Der MSIE hat eine eigene, nicht standardisierte Methode, um Events zu erzeugen und an bestimmten Elementen auszulösen:

      eingabefeld=document.getElementById('eingabefeld'); // mit <input ... id="eingabefeld">
      meinevent=document.createEventObject();
      meinevent.keyCode=97;
      eingabefeld.fireEvent('onkeydown', meinevent);

      Dies wäre beispielsweise ein simulierter Tastendruck der A-Taste. Wenn vorher ein Event-Handler für eingabefeld definiert wurde (oder für ein Elternelement, der Event steigt ja bei der Verarbeitung normalerweise auf), würde dieses ausgeführt und window.event.keyCode hätte den Wert 97. Der Event wird aber nur simuliert, allein dadurch taucht im Eingabefeld noch kein »a« auf. Dazu müsste wie gehabt mit eingabefeld.value gearbeitet werden.

      Mathias