Win10系统IE11回车键无障碍功能异常求助:按键触发逻辑异常
嘿,我来帮你捋捋这个IE11里的回车键问题——老浏览器的兼容性坑确实容易踩,结合你说的箭头键会触发范围外逻辑、回车键没被识别的情况,大概率是以下几个常见操作失误:
事件监听的兼容性遗漏:IE11对
keydown/keyup事件的key属性支持不完善,很多人习惯用event.key === 'Enter'判断回车键,但IE11里得用event.keyCode === 13或者event.which === 13才能正确识别。如果你的代码只依赖key属性,那IE11根本抓不到回车键的触发,反而箭头键(对应keyCode 38/40)会正常触发自己的逻辑,看起来就像回车键完全没被识别。逻辑分支的顺序或边界错误:比如你可能把回车键的判断逻辑放在了箭头键分支的里面,或者条件写反了。举个例子,要是代码写成:
if (event.keyCode === 38 || event.keyCode === 40) { // 箭头键处理逻辑 } // 其他逻辑那回车键触发时会直接走到“其他逻辑”里,而箭头键会触发自己的分支,就会出现你说的现象。正确的写法应该是把回车键的判断放在前面,或者用else if把分支区分开:
if (event.keyCode === 13) { // 回车键处理逻辑 } else if (event.keyCode === 38 || event.keyCode === 40) { // 箭头键处理逻辑 } else { // 其他逻辑 }无障碍元素的属性设置问题:如果是涉及无障碍组件(比如自定义的可交互列表、按钮),IE11对
tabindex和ARIA属性的要求很严格。要是目标元素没设置tabindex="0"让它获得焦点,或者没正确绑定keydown事件,回车键可能无法触发元素的默认激活行为,反而箭头键直接触发了页面上其他关联逻辑。事件冒泡或默认行为的干扰:如果你的箭头键处理逻辑没有阻止不必要的事件冒泡,或者回车键的处理没调用
event.preventDefault(),可能导致回车键的事件被父元素捕获,或者触发了浏览器的默认行为(比如表单提交),让你误以为程序没识别到回车键。
要是能补上你的代码片段会更精准,但先从这几点排查试试——优先把回车键的判断改成兼容IE11的keyCode方式,再检查逻辑分支的顺序,确认无障碍元素的属性设置正确。
内容的提问来源于stack exchange,提问作者Monica

