由于不建议使用该事件,因此应避免在新代码中使用它,并计划从旧代码中删除它。在W3C规范说这约不赞成使用的功能:
标记为已弃用的功能包含在规范中,以作为对较早的实现或规范的引用,但是是可选的,不建议使用。在本规范中,仅应弃用具有现有或正在进行的替换功能。尚不包含对功能的支持的实现可能出于与现有内容向后兼容的原因而实现了不推荐使用的功能,但是创建内容的内容作者不应使用不推荐使用的功能,除非没有其他方法可以解决用例。。引用此规范的其他规范不应使用不推荐使用的功能,而应指出赞成不推荐使用该功能的替换。本规范中标记为不推荐使用的功能有望从将来的规范中删除。
的规范keypress event
说:
警告本规范中定义了按键事件类型,以供参考和完整性,但本规范不赞成使用此事件类型。在编辑上下文中,作者可以改为订阅beforeinput事件。
您也可以使用keydown
and / or keyup
事件。请参阅按键,按键,按键和输入事件之间的区别?
但是,由于beforeinput
尚无足够的支持,因此如果这些其他事件都不适合您的用例,则您现在必须继续使用keypress
(这是“除非没有其他方法可以解决用例”异常),规格)。
浏览器对
beforeinput
事件的支持似乎没有数据。MDN有一个链接到它在这里,但页面不存在。您是否有关于此活动的其他信息?是的,但是
keydown
有点不同。在这个问题中,我试图找出应该停止使用的确切替代方法keypress
。如果规范作者打算beforeinput
达到此目的,我相信应该是更精确的匹配。完全同意你的看法。令人失望的
keypress
是,这么早就弃用了,因为在现实世界中实际上没有提供直接替代品,这给开发人员带来了艰难的选择。@AlexanderAbakumov-这是过时的要点,警告用户避免使用该功能,在这种情况下,因为它存在互操作性问题。当然,现实是,没有主流浏览器会停止实施按键,因为这样做会破坏大量现有网站。目前,这意味着您应该开始考虑如何组合使用keydown,beforeinput,input和keyup事件。您可以尝试检测输入前的支持,并在可用时使用它,否则返回按键。
@Alohci谢谢。只是为了使其更加清楚,我一般不会再次反对这种贬值。但是,这种特定情况的真正令人讨厌的部分是,它已过时了。仅在提供了可以在相当可观的努力水平下切实可行的替代产品之后,弃用才是好的。我相信,有一起工作的应用程序没有开发团队
keypress
(这是限制字符集最流行的选择inputs
)将试图搞乱keydown
,input
和keyup
事件只是因为beforeinput
还不可用。