2016-06-03 3 views
0

Ich bin neu in Javascript, obwohl ich JQuery gut verwendet habe. Aber ich kann keine bessere Dokumentation dafür finden. Das click-Ereignis muss nur ausgelöst werden, wenn ich die Eingabetaste drücke. Also muss ich Testfall für dieses Szenario schreiben.Wie man Schlüsselcode-Wert beim Auslösen des Tastendruckereignisses manuell in reinem Javascript setzt?

function btnRepeatKeyDownEvent(e){ 
     if (e.keyCode === 13) { 
      this.trigger('click', e); 
     } 
} 

bisher habe ich diese Lösung gefunden.

aber der obige Code gibt immer den Schlüsselcodewert 0 an. Ich bin mehr müde, um die Lösung zu finden. Gemäß MDN sind die meisten Funktionen veraltet. Ich muss diesen Testfall in Chrome, Firefox und IE11 + nur für alte Browser funktionsfähig machen. Bitte helfen Sie mir.

Antwort

1

Der keyCode und andere Eigenschaften sind schreibgeschützt. So können Sie fälschen, unter Ausnutzung von JavaScript-Object.defineProperties Funktion, die Werte überschreibt:

function makeKeyPressEvent(keyName, keyCode, charCode){ 
    var event = new KeyboardEvent('keypress'); 
    Object.defineProperties(event, { 
     charCode: {value: charCode}, 
     keyCode: {value: keyCode}, 
     keyIdentifier: {value: keyName}, 
     which: {value: keyCode} 
    }); 
    return event; 
} 

hier ist, wie es zu benutzen:

window.addEventListener('keypress', function(event){console.log('key pressed!', event.keyIdentifier, event.keyCode, event.charCode, event)}, true); 

var enterKeyEvent = makeKeyPressEvent('Enter', 13, 13); 

window.dispatchEvent(enterKeyEvent); 
+0

Typeerror: Der Versuch, Zugriffsmechanismus zu ändern, für eine unkonfigurierbare Eigenschaft in phantomJs - :( –

Verwandte Themen