Internet Explorer registriert keine Tastaturevents, Firefox funktioniert

Ich hab ein Mootools Widget (DropDownMenu) um diverse Tastaturevents erweitert, diese funktionieren im Internet Explorer, Chrome und Opera überhaupt nicht, im Firefox dagegen perfekt. Hier mal ein Codeauszug:

Code:
...
'keypress' : function(event) {
							
							var keyCode;
							if (window.event) {
								var e = window.event;
								keyCode = e.keyCode;
							} else {
								keyCode = event.code;
							}

							console.log(keyCode);
							console.log(this.options.elementWithFocus);
							
							// look into the specification for the exact action
							// of every key
							switch (keyCode) {
								case 9 :
									// tab

									console.log("tab");
									
									// closes all open
									// submenus
									while (this.options.menuCount > 0) {
										this.close();
									}
...

Ich sollte eigentlich mit den Pfeiltasten durch das Menü navigieren können, aber nur der Firefox scheint diese zu erkennen. Im Opera, IE und Chrome wird nur die Leertaste registriert ... ich versteh das echt nicht. Wieso gerade die Leertaste?

Falls ihr euch das Originalwidget anschauen möchtet, folgt dem Link: http://www.aryweb.nl/projects/MooDropMenu/ Sobald ich in die Menükomponente reintabbe, soll sie sich komplett per Tastatur bedienen lassen. Das funktioniert wie gesagt im Firefox 3.6 wunderbar, im Internet Explorer 8 und Chrome 8 leider überhaupt nicht.

Im Anhang sind noch einige Bilder der Browserausgaben (Reihenfolge: Tastaturcode, fokussiertes Element, evtl sinnloser Text). Die Browser zeigen mir übrigens keine Skriptfehler an. Hat jemand eine Idee an was das liegen könnte?
 

Anhänge

  • ie.png
    ie.png
    5 KB · Aufrufe: 10
  • chrome.png
    chrome.png
    16,5 KB · Aufrufe: 3
  • firefox.png
    firefox.png
    11,1 KB · Aufrufe: 5
ich glaube das Problem liegt an der Browserweiche.

Probier mal folgendes

function getKey(e) {
var code;
if (!e) var e = window.event;
if (e.keyCode) code = e.keyCode;
else if (e.which) code = e.which;
var character = String.fromCharCode(code);
alert('Character was ' + character);
return character;
}

'keypress' : function(event) {
key = getKey(event);
.....
 
Mit deiner Weichenoption erhalte ich leider im Internet Explorer wieder ein anderes Verhalten als im Firefox. Der FF bringt mir ein alert Fenster, die IE macht leider überhaupt nichts.
 
naja das alert muss natürlich raus.
der ie sollte das auch abhandeln können.



nimm folgendes



function getKey(e) {
var code;
if (!e) var e = window.event;
if (e.keyCode) code = e.keyCode;
else if (e.which) code = e.which;

return code;
}
'keypress' : function(event) {
keycode = getKey(event);

var char= String.fromCharCode(keycode); // musst mal schaun was dabei rauskommt
 
Ich bin mir relativ sicher, dass der IE ein alert Fenster auch ausgeben kann :) Ich glaube ehrlich gesagt nicht, dass es an der Browserweiche liegt. Allerdings werde ich dennoch deinen 2. Vorschlag morgen auf Arbeit ausprobieren ;)
 
Zurück