我是Javascript的新手,尽管我已经很好地使用了JQuery。但我无法找到更好的文档来做到这一点。仅当我按下回车键时才需要触发点击事件。所以我需要为这种情况编写测试用例。
function btnRepeatKeyDownEvent(e){
if (e.keyCode === 13) {
this.trigger('click', e);
}
}
到目前为止,我已经找到了这个解决方案。
let keyboardEvent: KeyboardEvent = new KeyboardEvent('keypress', {'key': 'Enter'});
document.dispatchEvent(keyboardEvent);
但上面的代码总是给keycode值为0.我更厌烦找到解决方案。根据MDN,大多数功能都已弃用。 我需要让这个测试用例在chrome,firefox和IE11 +中可行,但不适用于旧浏览器。请帮助我。
答案 0 :(得分:2)
keyCode和其他属性是只读的。所以,你可以假装它,利用JavaScript的 Object.defineProperties 功能来覆盖值:
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;
}
以下是如何使用它:
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);