账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    IE下用react添加keydown事件 backspace按键会导致页面回退
    43
    0

    先描述下出现问题的场景,使用react在组件componentDidMount时添加监听事件 window.addEventListener('keydown', this.handleKeyDown);当组件销毁时移除这个监听事件。
    键盘事件处理是在input框聚焦时,判断是否按下了“backspace”键时,如果这个input框内有值,则会先删除,当没有值时,继续按下“backspace”,将会执行某个函数,贴出如下代码:

    handleKeyDown (e) {
            if (document.activeElement.className === 'search-input') {
                let cursorPosition = this.props.cursorPosition
                switch (e.keyCode) {
                case KeyCodeMap.BACK_SPACE:
                case KeyCodeMap.DELETE:
                    if (this.autoComplete.isEmpty() && cursorPosition >= 0) {
                        this.props.onHandleDeleteSelect(cursorPosition)
                    }
                    break
    
                case KeyCodeMap.LEFT:
                    XXXXXXX
                    XXXXXXX
                    break
    
                case KeyCodeMap.RIGHT:
                    XXXXXXX
                    XXXXXXX
                    break
                default:
                    break
                }
            }
        }

    按下“backspace”后里面执行的这个函数的作用在这里和我要问的问题没什么太大关系,我就不详细说了;接下来问题来了,按下了“backspace”后,先是把input内的值删除了,在谷歌、火狐等浏览器里没有值以后会执行这里面的函数,不会有其他操作;然后到了IE里面,这个input框没有值的时候,然后再按一下就会把页面给回退了,这里面的函数执行了也看不到。

    求大神们有没有什么方法可以阻止IE页面回退。

    第一次提问题,如果大家觉得问题描述不够清楚可以留言继续问我,我尽量解释解释。
    烦请各位大神多多指导~谢谢!!

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部