如何使用特定的keyCode创建KeyboardEvent

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

wat*_*lea 1

keyCode已被弃用,Angular 本身使用key\xe2\x80\x94 运行,我建议你重写你的逻辑来使用它。请记住,它取决于浏览器 \xe2\x80\x94 在 IE 中空格键是Space,在其他浏览器中是。又EscEscape不同。不记得有任何其他不同之处。

\n