Ergebnis 1 bis 3 von 3

Thema: Tastatursteuerung im Browser

  1. #1
    Neuer Benutzer
    Registriert seit
    06.12.2017
    Beiträge
    20

    Tastatursteuerung im Browser

    Hallo Forum,

    ich möchte gerne für ein Projekt im Intranet die Tastatursteuerung nutzen.

    Via PHP erzeuge ich die Buttons:
    PHP-Code:
    echo '<a id="linkMenue' $key '" href="#anchor' $key '" data-firstLetter="' substr($value01) . '">' $value '</a>'
    Und der dazugehörige jQuery-Code:
    Code:
    	// Tastatursteuerung
    	$('body').keydown(function(event) {
    		
    		$keyCode = (event.keyCode ? event.keyCode : event.which);
    		
    		if (event.altKey && $keyCode >= 65 && $keyCode <= 90) {
    			
    			$arrKeyCode	= {
    					char65:'A', char66:'B', char67:'C', char68:'D', char69:'E', 
    					char70:'F', char71:'G', char72:'H', char73:'I', char74:'J',
    					char75:'K', char76:'L', char77:'M', char78:'N', char79:'O',
    					char80:'P', char81:'Q', char82:'R', char83:'S', char84:'T',
    					char85:'U', char86:'V', char87:'W', char88:'X', char89:'Y',
    					char90:'Z'
    				};
    			
    			$obj		= $('[data-firstLetter="' + $arrKeyCode['char' + $keyCode] + '"]');
    			$last		= $('[data-firstLetter="' + $arrKeyCode['char' + $keyCode] + '"]:last');
    			$hasFocus	= $('[data-firstLetter="' + $arrKeyCode['char' + $keyCode] + '"]:focus');
    			
    			($hasFocus.text().length == 0 || $hasFocus.is($last) ? $obj.first().focus() : $hasFocus.next().focus());
    			
    			return false;
    			
    		}
    	});
    Was passiert:
    Ich überwache die Tastatureingaben.
    Wenn die [ALT] + eine zusätzliche Taste [A-Z] (65-90) gedrückt wird, dann bekommt der 1. Button, dessen Text mit dem jeweiligen Buchstaben anfängt, den Focus.
    Wird erneut die gleiche Tastenkombination genutzt, springt der Focus auf den 2. Button, dessen Text mit dem jeweiligen Buchstaben anfängt usw.
    Kommt kein weiterer Button mehr mit dem gleichen Buchstaben, springt der Focus wieder auf den 1. Button mit dem jeweiligen Buchstaben.

    Soweit, so gut, es funktioniert.

    Problem:
    Da die Browser einige Tastenkombinationen mit ihren eigenen Aktionen verbunden haben (z. B IE11: [ALT] + [D] = Datei), funktionieren diese dann leider nicht, trotz return false, ebenso mit event.preventDefault(); funktioniert das nicht.
    Hat jemand eine Idee, wie ich das umgehen kann?
    Zumal jeder Browser auch noch wieder unterschiedliche Tastenkombinationen sein eigen nennt.

    Ergänzung: Im IE11 geht es nicht, der löst trotzdem seine eigenen Aktionen aus.
    Code:
    // funktioniert leider nicht:
    
    		if(event.altKey) {
    			event.cancelBubble = true;
    			event.returnValue = false;
    			event.keyCode = false;
    			return false;
    		}
    Geändert von papender (11.07.2018 um 15:30 Uhr)

  2. #2
    Erfahrener Benutzer
    Registriert seit
    29.10.2014
    Beiträge
    535
    Kannst du mal ein Beispiel auf jsbin/jsfiddle erstellen?
    i++; // zaehler i um 1 erhoehen

  3. #3
    Neuer Benutzer
    Registriert seit
    18.07.2018
    Beiträge
    1
    Mich würde ein Beispiel auf jsfiddle auch brennend Interessieren

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •