Jes*_*sen 11 javascript angular
我正在尝试在单元测试中模拟keydown事件(angular2/TypeScript).我并不总是有可用的DebugElement,所以我试图在本机元素上发出事件.我遇到的问题是如何在创建KeyboardEvent时定义keyCode.keyCode未定义为KeyboardEventInit定义的一部分,而在KeyboardEvent本身上,它仅作为只读属性公开.
只需添加一个keyCode属性(并将obj类型设置为)也不起作用.
let elm = <HTMLElement>content.nativeElement;
let ev = new KeyboardEvent('keydown', {
code: '123',
//keyCode: 345,
key: 'a',
});
elm.dispatchEvent(ev);
Run Code Online (Sandbox Code Playgroud)
有什么建议 ?
编辑:根据mdn链接,不推荐使用keyCode,不应使用,而应使用"code". https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/keyCode
keyCode已被弃用,Angular 本身使用key\xe2\x80\x94 运行,我建议你重写你的逻辑来使用它。请记住,它取决于浏览器 \xe2\x80\x94 在 IE 中空格键是Space,在其他浏览器中是。又Esc与Escape不同。不记得有任何其他不同之处。