keyCode 和哪些已弃用 - 那么为什么它不起作用?

keyCode and which are deprecated - so why is that not working?

根据MDN Web Docs KeyboardEvent and Google Updates KeyboardEvent keycode实现而keyCode哪些 已弃用。

考虑到这一点,我应该能够按如下方式发送 keydown 事件:

document.dispatchEvent(
    new KeyboardEvent("keydown", {
        key: 'K',
        code: 'KeyK',
        shiftKey: false,
        ctrlKey: false,
        metaKey: false
    })
);

不幸的是它不起作用,而如果我另外添加 keyCode 这个脚本就可以完美运行。带有 keyCode 的对象:

document.dispatchEvent(
    new KeyboardEvent("keydown", {
        key: 'K',
        code: 'KeyK',
        keyCode: 75,
        shiftKey: false,
        ctrlKey: false,
        metaKey: false
    })
);

我错过了什么吗? keyCodewhich 已弃用,因此应该可以在没有这些元素的情况下创建工作事件。我找不到任何答案。

我正在使用 Google Chrome (87) 的当前版本。我通过向 YouTube 发送 k 密钥来测试此脚本以获取 play/pause 视频。

文档中的“已弃用”状态告诉您,您不应依赖那些在您收到的事件中存在的属性,因为浏览器开发人员 正计划停止将它们 包含在他们创建的事件中

但是,在这种情况下,您正在模拟 浏览器 通常执行的代码部分,在 creating 事件中.您和浏览器都无法知道 receiving 该事件要查找的代码。

如果您遗漏了已弃用的属性,则您正在模拟 未来的 浏览器,而您正在测试的 YouTube 网站目前可能无法使用该未来的浏览器.您最好设置 当前 浏览器会为该事件设置的所有属性。

请注意,YouTube 的开发人员虽然最终与 Chrome 的开发人员受雇于同一家公司,但他们之间的联系可能很少。他们将定期更新他们的代码以遵循当前的最佳实践 就像任何 well-运行 开发团队 一样,但这需要时间,并且必须在其他所有事情中优先考虑他们正在努力。