`
mxyzdl1234
  • 浏览: 3484 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

Ext源码---TriggerField控件聚焦问题

阅读更多
    问题描述:
    今天又发现了Ext源码的小bug,TriggerField.js中源码如下:
// private
    onFocus : function(){
        Ext.form.TriggerField.superclass.onFocus.call(this);
        if(!this.mimicing){
            this.wrap.addClass(this.wrapFocusClass);
            this.mimicing = true;
            this.doc.on('mousedown', this.mimicBlur, this, {delay: 10});
            if(this.monitorTab){
                this.on('specialkey', this.checkTab, this);
            }
        }
    },


其中doc为html中body的引用,对于使用Ext的方式进行的鼠标按键绑定,只有在鼠标放置到body中的某个html元素内进行点击时,mousedown响应方法mimicBlur才会执行,对于空白处点击鼠标,mousedown的响应方法居然不响应,导致TriggerField 对于失去焦点的判断总是有问题。
解决办法:
经过测试发现,document.onmousedown方法可以监听鼠标事件,只要鼠标放在窗口里进行点击就能监听到,而且this.doc又是body的引用,那么采用修改源码采用document.onmousedown方法替换,至于想获取鼠标触发时,鼠标所在的原标签可以通过event.srcElement获取。
测试结果:
IE8上这么修改OK,IE9尚未测试,另外Ext对于mousedown响应的局限性只体现在IE8,对于谷歌浏览器还是完美支持的。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics