wake-up-neo.net

Wie kann ich einen Tastendruck in JavaScript simulieren?

Ich versuche einen Weg zu finden, um einen Tastendruck zu simulieren.

Wenn zum Beispiel die Funktion gestartet wird, sollte die Taste "Pfeil nach unten" gedrückt werden und die Webseite sollte daher leicht verschoben werden.

Ich interessiere mich nur für Chrome, und sowohl jQuery als auch plain JS sind angemessen. (Einfacher JS ist vorzuziehen).

Das ist eines der Codebeispiele, die ich ausprobiert habe:

var e = $.Event("keydown", { keyCode: 40}); // 40 = down arrow
$("body").trigger(e);
// When I launch it the console, nothing happens. The page is not scrolled.
// May be I missed some obvious?

Ich suchte und fand die folgenden verwandten Fragen, aber die Lösungen funktionierten nicht für mich:


Mit anderen Worten

Mit AutoHotkey können Sie leicht Folgendes erstellen:

Down::
Send, {Up}

Wenn Sie dann die Down-Pfeiltaste drücken, wird Up ausgelöst. Ich möchte es nur mit JS implementieren.

20
jsv

@Rfsbsb wies darauf hin, dass: Jquery-Skript für simulierten Tastendruck nicht laufende Tastenkombination ausgeführt wird

Wenn Sie versuchen, eine Browser- oder systemweite Tastenkombination auszulösen dann ist es eine Sackgasse - aus Sicherheitsgründen ist dies nicht möglich. Wenn es möglich wäre, hätten Sie im ganzen Internet Seiten, die würde sie (beispielsweise) zu Ihren Lesezeichen hinzufügen, ohne dass Sie dazu aufgefordert werden. (indem Sie die Tastenkombination STRG + B mit Javascript auslösen).

7
Gavriel

Mit diese Antwort habe ich den Code ein wenig geändert und ich glaube, ich habe das bekommen, wonach Sie suchen?

hier ist mein jsfiddle

Code:

jQuery(document).ready(function($) {
    $('body').keypress(function(e) {
        if(e.which == '40') 
            $('body').animate({scrollTop: '100px'});
    });
});
jQuery.fn.simulateKeyPress = function(character) {
    jQuery(this).trigger({
        type: 'keypress',
        which: character
    });
};

 setTimeout(function() {
    $('body').simulateKeyPress(40);
 }, 1000);
5
Haring10

Hier ist ein Beispiel aus dem Beispiel von @ Haring10:

https://jsfiddle.net/po33vfb4/4/

$('body').keydown(function(e) {
  e.preventDefault();
  e.stopImmediatePropagation();

  if(e.which == 40) {
    window.scrollBy(0, -100);
  } else {
    window.scrollBy(0, 100);
  }
});

Das programmgesteuerte Auslösen des Keydown-Keyup-Tastendrucks scheint nicht das Scrollen zu bewirken. Das obige Beispiel kann angepasst werden, um Animationen hinzuzufügen.

2
Doru Pîrvu