CSS背景色无法覆盖?keypress失效但keydown正常是什么原因?
CSS ID选择器不生效问题
根本原因
你的 #1A 选择器本身属于非法CSS语法,CSS解析器会直接跳过该规则,和样式优先级无关,所以加!important也不会生效。
CSS规范明确要求:ID、类名选择器不能直接以数字作为开头,否则会被识别为语法错误。
修复方案
- 方案一:调整ID命名,改为字母开头,比如将元素ID改为
cell-1A,对应CSS选择器写#cell-1A - 方案二:对数字开头的ID做转义处理,选择器写为
#\31 A(\31是字符1的十六进制ASCII转义码,后面的空格用于分隔后续的A字符) - 方案三:使用属性选择器匹配,写为
[id="1A"],不需要修改原有ID,兼容性最好
按键监听事件问题
keydown适用性
keydown完全适合该场景,它是DOM标准支持的稳定事件,所有按键按下时都会触发,不受按键类型、输入法状态、页面焦点元素类型限制,适合全局监听普通字符按键。
keypress失效原因
keypress事件已被W3C正式废弃,主流浏览器正在逐步降低对它的支持度,部分浏览器在页面没有聚焦可输入元素时,会直接不触发keypress事件- keypress仅在按下可产生可见字符的按键时才会触发,不会响应功能键、输入法输入过程中的按键,触发条件限制非常多
- keypress关联的
keyCode、charCode属性均已被废弃,不同浏览器的返回值差异极大,很容易导致判断逻辑失效
内容的提问来源于stack exchange,提问作者Lukedoc321
相关产品推荐
相关产品推荐

