HTML Button soll Tastatur-Taste simulieren?

2 Antworten

Vielleicht versuche ich es beim falschen Slider auf der von dir verlinkten Seite (ich beziehe mich auf die Ansicht mit den großen Hintergrundbildern, zu denen rechts unten eine Miniaturansicht als Navigation eingebaut ist), doch via Tastatur lässt sich da jedenfalls nichts bewegen.

Wie dem auch sei, der korrekte Weg wäre es, bei Klick auf die von dir eingebauten Buttons die JavaScript-Funktion aufzurufen, die den nächsten Slide ansteuert. Den Workaround über Key-Events solltest du nicht gehen. Auf einem mobilen Endgerät bspw. hast du keine Tastatur und deine Buttons würden dementsprechend nicht funktionieren.

Für den Revolution Responsive jQuery Slider gibt es eine Dokumentation, die ebenso eine öffentliche Schnittstelle anbietet. Über die würde ich es zunächst versuchen. Da du, wie du schreibst, Laie bist, wäre es dabei besser, wenn du dir zusätzliche Hilfe von deinem Kollegen holst (der vermutlich etwas mehr Ahnung hat?). JavaScript-Kenntnisse sind hierbei vonnöten.

hannoverfilmt 
Fragesteller
 15.05.2020, 10:53

Nein, das ist wie gesagt nur das ursprüngliche Template. Unten gibt es die Möglichkeit bei .navigaton die KeyboardNavigation auf 'on' oder 'off' zu setzen. Auf dem Smartphone habe ich eine Touch-Geste eingebaut, das ist nicht das Problem. Daher würde mich wirklich interessieren, wie der Code für die Simulation einer Taste lautet.

0
regex9  15.05.2020, 11:23
@hannoverfilmt

Also reden wir hier sogar von unterschiedlichen Seiten.

Somit hättest du aber schon einen Startpunkt für eine Suche, denn gerade diese Tastenevents müssten ja im Skript aufgefangen werden und an dieser Stelle fände man auch den Aufruf der Funktionen, die den nächsten Slide ansteuern.

Dies sollte der bevorzugte Lösungsweg sein.

Daher würde mich wirklich interessieren, wie der Code für die Simulation einer Taste lautet.

Da du ja sicherlich eh schon jQuery eingebunden hast, hier ein Beispiel mit jQuery:

const keyEvent = $.Event("keypress", { which: 65, keyCode: 65 });
$(document).trigger(keyEvent);

Dies würde die Taste A drücken. Für Pfeiltasten müssten die Keycodes hingegen 37 (links) und 39 (rechts) lauten.

1
hannoverfilmt 
Fragesteller
 15.05.2020, 11:39
@regex9

Geil! Vielen Dank! - Anschlussfrage: Was binde ich im HTML des Buttons ein um dieses jQuery-Event zu triggern? :-)

0
hannoverfilmt 
Fragesteller
 15.05.2020, 12:04
@hannoverfilmt

Also den Code binde ich unten in die jquery.js ein - aber was baue ich in das HTML des Buttons ein? (Sorry für die unprofessionelle Ausgangslage, haha...)

0
regex9  15.05.2020, 12:08
@hannoverfilmt

Das Skript selbst muss innerhalb eines script-Blocks stehen, vorzugsweise vor dem schließenden body-Tag.

Beispiel für den linken Button:

<script>
  $("#id-of-left-button").click(function() {
    const keyEvent = $.Event("keypress", { which: 37, keyCode: 37 });
    $(document).trigger(keyEvent);
  });
  // and here almost the same for right button ...
</script>

Der Button sollte hierbei eine ID haben, wie oben gegeben (ohne Raute).

<button id="id-of-left-button" type="button">Previous</button>
1
hannoverfilmt 
Fragesteller
 15.05.2020, 12:27
@regex9

Irgendwie passiert da gar nichts... Kann ich Dich zufällig bezahlen und Du schaust Dir das ganze Spektakel hier mal per Bildschirmfreigabe an?

0
regex9  15.05.2020, 12:47
@hannoverfilmt

Zuerst würde ich prüfen, ob in der Browserkonsole Fehlermeldungen angezeigt werden. Wenn nicht, kannst du einmal diesen Code-Block noch hinter dem bisherigen setzen:

$(document).on("keypress", function(evt) {
  alert("key pressed: " + evt.which);
});

Für jedes Key-Event sollte daraufhin ein Fenster aufploppen, welches Auskunft über den getätigten Tastendruck gibt.

Arbeitsaufträge nehme ich auf GF nicht an. Wenn sich keine Lösung finden lässt, solltest du auf dafür ausgerichteten Portalen (wie Fiverr) nach Entwicklern suchen, die das Problem für dich lösen.

1

Was genau willst du damit bezwecken? Du kannst mit HTML/JavaScript quasi nichts außerhalb des Browsers tun, also auch keine Tastenanschläge an das System übermitteln.

Woher ich das weiß:Berufserfahrung – Tätigkeit als Webentwickler in einer Digitalagentur
hannoverfilmt 
Fragesteller
 14.05.2020, 22:31

Ich habe eine Seite von einem Kollegen bekommen, die auf Bootstrap basiert und einen Revolution Slider hat. Selbst bin ich nur ein Webdesign-Laie und versuche irgendwie die vorhandenen Buttons (Arrows) so hinzubekommen, dass sie ein Layer/Frame weitergehen. Quasi zur Navigation der Seite. Weil das aber (mangels meiner Kompetenz) nichts wird, dachte ich mir, ich nutze die Keyboard-Navigation und gebe dem rechten Button/Arrow die Aufgabe meine rechte Tastatur-Pfeiltaste zu simulieren...
Das war das ursprüngliche Template, mir ist es wie gesagt gelungen links und rechts Arrow-Buttons einzubauen, die aber logischerweise keine Funktion haben. Ich möchte damit einen Layer weiterkommen, mit # o.Ä. funktioniert es auch nicht.
http://themes.semicolonweb.com/html/canvas/rs-demo-slider-photography.html

0