背景:最近开发的韩文项目,要求在用户名输入框中只输入韩文字符。通常使用onkeyup和onafterpaste两个事件来触发方法,在方法中验证方法,但是在IE浏览器中,有一种情况是当韩文单词拼写没有完成时,会进行验证并直接显示,如下例所示,不是想要的结果,需要兼容IE;记录整个过程:label绑定事件标签绑定onkeyup键盘事件和onafterpastepaste当文本进入输入框时有两个事件。当有这两个操作时,会触发相应的验证方法;验证方法keyup(ev){if(!this.imeStatus){ev.target.value=ev.target.value.replace(/[^?-??-??-?A-Za-z0-9]/g,'')}},当事件被触发时,会有一个变量imeStatus来检查是否是IE浏览器设备,然后根据常规检查替换输入框的值。注意:替换的应该是当前输入的值,而不是整个输入框包含所有已经输入的值;如果(getBrowser()==='IE'){window.addEventListener('compositionstart',()=>{this.imeStatus=true},false)window.addEventListener('compositionend',()=>{这个。imeStatus=false},false)}IE浏览器验证:如果是IE浏览器,监听输入法事件。输入法输入开始时,变量imeStatus为真,不校验当前输入值。当触发输入法输入结束事件时,表示拼写完成,变量imeStatus为false,验证当前拼写输入的单词;functiongetBrowser(){constuserAgent=navigator.userAgentif(userAgent.indexOf('OPR')>-1){return'Opera'}if(userAgent.indexOf('Firefox')>-1){return'FF'}if(userAgent.indexOf('Trident')>-1){return'IE'}if(userAgent.indexOf('Edge')>-1){return'Edge'}if(userAgent.indexOf('Chrome')>-1){return'Chrome'}if(userAgent.indexOf('Safari')>-1){return'Safari'}}浏览器端判断:navigator.userAgent获取当前浏览器信息;以上是我在项目开发过程中遇到的兼容IE的地方;文中提到的韩文验证也可以换成其他语言,可以根据自己项目的具体需求进行修改;