JavaScript中已废弃的keyCode应替换为何值?相关代码如何修改?
解决方案
替换后的代码
优先使用标准化的code属性匹配物理按键,修改后代码如下:
document.addEventListener('keyup', function (e) { e.preventDefault(); if (e.code === 'Slash') { document.getElementById('search-input').focus() } })
如果你的需求是只有输入字符为/时才触发(按住shift按该键输入?时不触发),可以替换为判断e.key === '/':
document.addEventListener('keyup', function (e) { e.preventDefault(); if (e.key === '/') { document.getElementById('search-input').focus() } })
是否有必要替换
- 临时项目、不需要兼容多键盘布局的场景下,不替换也可正常运行:目前所有主流浏览器的现存版本都还保留了
keyCode的向后兼容,不会直接报错。 - 长期维护的公开项目强烈建议替换:
keyCode已经被正式从W3C DOM标准中移除,未来浏览器版本随时可能停止对该属性的支持keyCode的返回值在不同语言、不同布局的键盘上会出现不一致的问题,code和key是标准化属性,多环境下的表现更稳定- 可以消除编辑器的deprecated告警,提升代码可维护性
内容的提问来源于stack exchange,提问作者user16735766
相关产品推荐
相关产品推荐

