Announcement

Collapse
No announcement yet.

KeyboardEvent und Tastendruck machen nicht das Gleiche

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • KeyboardEvent und Tastendruck machen nicht das Gleiche

    Hallo zusammen,

    ich würde gerne aus unserem Intranet eine Telefonnummer anrufen. Das funktioniert über eine Tastenkombination, die ich nun über einen Button/javascript aufrufen möchte.

    Ich habe hier alles auf das Minimum herutergebrochen und die Tastenkombination durch F1 ersetzt:

    <asp:Button ID="btnTelefon" runat="server" Text="anrufen" OnClientClick="telefon(); return false;" />

    function telefon() {
    window.addEventListener('keydown', (e) => {
    alert('Window ' + e.key);
    })

    window.dispatchEvent(new KeyboardEvent('keydown', {
    'key': 'F1'
    }));
    }

    Wenn ich den Button drücke, kommt die Meldung "Window F1" und nichts weiter passiert. Wenn ich F1 auf der Tastatur drücke, kommt die Meldung und danach geht die Hilfe auf. (Das Selbe mit der ursp. Kombination oder F11. Per Tastatur geht es, per Button nicht.) Es ist quasi so, als wenn das KeyboardEvent nicht im System ankommt. Woran liegt das? Was kann ich tun?

  • #2
    Bei jedem Buttondruck soll ein Eventlistener hinzugefügt werden?
    Warum sollte bei einem Buttondruck die Meldung kommen?
    Es passiert doch gar nichts, wenn der Button gedrückt wird, es wir ein Listener gebunden, nichts weiter
    Zuletzt editiert von Christian Marquardt; 11.07.2022, 11:59.
    Christian

    Comment


    • #3
      Der EventListener ist da jetzt nur drin zu testzwecken, damit ich nachvollziehen kann dass etwas passiert. Der kommt natürlich wieder raus.
      Direkt darunter steht window.dispatchEvent(new KeyboardEvent (die allerletzte geschweifte Klammer schließt die Prozedur)

      Comment


      • #4
        https://www.w3schools.com/jsref/event_createevent.asp
        Zuletzt editiert von Christian Marquardt; 11.07.2022, 13:56.
        Christian

        Comment


        • #5
          Es macht keinen Unterschied ob ich erst das Event anlege, danach initialisiere und dann dispatche, oder alles in einer Zeile (habe es auch ausprobiert).

          Das Event feuert ja auch. Es wird ja vom Listener angezeigt. Nur passiert leider nichts...

          Erweiterung:
          window.addEventListener('keydown', (e) => {alert('window ' + e.key);})
          document.addEventListener('keydown', (e) => {alert('document ' + e.key);})
          document.dispatchEvent(new KeyboardEvent('keydown', {'key': 'F1'}));

          ergibt: "document: F1".... nach drücken der F1 Taste: "document: F1" gefolgt von "window: F1" gefolgt von "Hilfe geht auf".


          Erweiterung: 2
          document.getElementById('TextBox1').select();
          window.dispatchEvent(new KeyboardEvent('keydown', {'key': 'e'}));

          ergibt: "window: e" und alte Text in der Textbox ist selektiert...... nach drücken der e Taste "document: e" gefolgt von "window: e" und in der Textbox steht ein e

          Comment


          • #6
            Würde das alles trennen.
            Die Events werden beim Onload an die Objekte gebunden
            Ein Clicklistener an den Button.
            Ein documentEvent für den Key
            Beide rufen dann die funktion Telefon auf.
            Sehe keinen Sinn darin, ein Event bei auftreten eines andern Event zu erzeugen
            Christian

            Comment


            • #7
              Ich würde gerne aus unserem Intranet eine Telefonnummer anrufen. Das funktioniert über eine Tastenkombination, die ich nun über einen Button/javascript aufrufen möchte.

              Heißt auf einer Intranetseite steht eine Telefonnummer. Die kann man markieren und dann durch drücken von Strg+F12 die Telefonanlage dazu veranlassen diese Nummer anzurufen. Nun kann man sagen die Kollegen sollen die Telefonnummer markieren und dann Strg+F12 drücken. Ich möchte das allerdings in einem Button in dem idealer Weise ausschließlich steht:

              document.getElementById('TextBox1').select();
              window.dispatchEvent(new KeyboardEvent('keydown', {'key': 'F12', ctrlKey: true}));

              Das funktioniert aber nicht. Also Listener einbauen, um festzustellen ob das Event ausgelöst wird. Ja, Event ist da. Andere Tasten ausprobieren...es geht mit keiner Tastenkombination (weder F1 Hilfe, F11 Vollbild, e um das Textfeld zu überschreiben).... per Tastatur geht es....

              Comment


              • #8
                https://justpaste.it/9rd38

                funktioniert hier
                Christian

                Comment


                • #9
                  Hallo Christian, danke für Deine Hilfe.
                  Ich habe den Code in eine ganz neue html kopiert.

                  In Deinem Code hängt der Listener am document, das Event am window -> kein alert.
                  Durch das fehlende(?) ;return false; und action="/action_page.php versucht er natürlich die Seite action_page.php aufzurufen -> 404. Egal ob ich das Eine entferne oder das Andere hinzufüge, danach ist Problem wieder da. Event wird ausgeführt, Nummer markiert, nix passiert. Per Tastatur geht es.

                  Comment

                  Working...
                  X