定时器解决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