定时器解决IE9中propertychange和input事件在拖拽、剪切、删除时无法触发
来源:互联网 发布:js和php文件怎么运行 编辑:程序博客网 时间:2024/05/17 02:47
在做项目中,遇到了一个在IE9下的input框在拖拽、剪切、删除时无法触发change时,搜索了好久,发现是IE9的一个BUG。
参考文章:http://blog.csdn.net/cuixiping/article/details/7450542
所以写了一个定时器来动态的监听input的框中值的变化,当获取焦点时启动定时器,当离开焦点时关闭定时器。
实现代码如下:
//IE9的一个BUG:propertychange和input事件在拖拽 / 剪切 / 删除时无法触发 var myBrowser=BrowserType(); console.info("myBrowser:"+myBrowser) if(myBrowser=="IE9"){ $('input').each( function () { var self = $(this); var intervalName; self.focus(function(){ intervalName = setInterval(function () { self.trigger("propertychange"); },300); }); self.blur(function() { clearInterval(intervalName); }); } ); }
此处设置了每300毫秒手动触发一下propertychange事件。
另外关于判断浏览器版本的代码是参考http://www.php.cn/js-tutorial-368364.html
附上代码:
function BrowserType(){ var userAgent = navigator.userAgent; //取得浏览器的userAgent字符串 var isOpera = userAgent.indexOf("Opera") > -1; //判断是否Opera浏览器 var isIE = userAgent.indexOf("compatible") > -1 && userAgent.indexOf("MSIE") > -1 && !isOpera; //判断是否IE浏览器 var isEdge = (userAgent.indexOf("Windows NT 6.1; Trident/7.0;") > -1|| userAgent.indexOf("Windows NT 6.1; WOW64; Trident/7.0;")) && !isIE; //判断是否IE的Edge浏览器 var isFF = userAgent.indexOf("Firefox") > -1; //判断是否Firefox浏览器 var isSafari = userAgent.indexOf("Safari") > -1 && userAgent.indexOf("Chrome") == -1; //判断是否Safari浏览器 var isChrome = userAgent.indexOf("Chrome") > -1 && userAgent.indexOf("Safari") > -1; //判断Chrome浏览器 if (isIE) { var reIE = new RegExp("MSIE (\\d+\\.\\d+);"); reIE.test(userAgent); var fIEVersion = parseFloat(RegExp["$1"]); if(fIEVersion == 7) { return "IE7";} else if(fIEVersion == 8) { return "IE8";} else if(fIEVersion == 9) { return "IE9";} else if(fIEVersion == 10) { return "IE10";} else if(fIEVersion == 11) { return "IE11";} else { return "0"}//IE版本过低 }//isIE end if (isFF) { return "FF";} if (isOpera) { return "Opera";} if (isSafari) { return "Safari";} if (isChrome) { return "Chrome";} if (isEdge) { return "Edge";}}
阅读全文
0 0
- 定时器解决IE9中propertychange和input事件在拖拽、剪切、删除时无法触发
- IE9的一个BUG:propertychange和input事件在拖拽 / 剪切 / 删除时无法触发
- input和propertychange事件
- propertychange/input事件
- input propertychange事件,当input的value值发生改变时触发(文本框的值即时搜索)
- js keyup事件 在安卓和苹果手机不同使用 input propertychange
- 关于input框change事件和propertychange事件的区别
- 解决动态生成input无法触发click事件的问题
- 解决动态生成input无法触发click事件的问题
- 前端即时搜索的触发(input propertychange)
- change、keypress、input和propertychange
- change、keypress、input和propertychange
- 图片上传时input file change事件多次触发解决
- 图片上传时input file change事件多次触发解决
- Storage事件无法触发解决
- Storage事件无法触发解决
- IE9及以下 span元素无法触发鼠标事件解决办法
- propertychange和oninput事件笔记
- 网络抓包工具
- 我在eclipse中启动Tomcat8.5之后,运行项目下的JSP文件,总是报404错误,但是访问http://localhost:8080/地址却可以正常访问
- HDU 1455
- Spring Mvc-入门案例
- Android播放本地视频音频
- 定时器解决IE9中propertychange和input事件在拖拽、剪切、删除时无法触发
- Tomcat 7.0在Eclipse下安装与部署(下)
- SJXXX串口扩展芯片 UART(1) to UART(4)
- new/delete和malloc/free的区别
- abap对采购订单强制置为”交货已完成“状态(BAPI_PO_CHANGE、BAPI_PO_RELEASE、BAPI_PO_RESET_RELEASE)
- std::map error: implicit instantiation of undefined template 不能识别std::map迭代器指针
- Spring MVC实际项目中的应用
- MY97 DatePicker
- LiveData的学习