现在的位置: 首页 > 综合 > 正文

Ext.app.SearchField在IE8中显示异常的问题

2012年11月21日 ⁄ 综合 ⁄ 共 883字 ⁄ 字号 评论关闭

Ext.app.SearchField在IE8中,输入框看不见。在IE6,IE7,FF,Chrome等浏览器中都没有问题。

研究代码发现。是因为Ext.form.TriggerField的afterRender处理程序中的一段代码造成的:

    afterRender : function(){
        Ext.form.TriggerField.superclass.afterRender.call(
this);
        
var y;
        
if(Ext.isIE && !this.hideTrigger && this.el.getY() != (y = this.trigger.getY())){
            
this.el.position();
            
this.el.setY(y);
        }
    },
在这里this.el.getY() 和this.trigger.getY()得到的值不一样。用FireBug或者IE8的工具查看HTML,以及在Vs的帮助下,了解到this.el代表的是Input输入框。this.trigger代表的是包含搜索图片和删除图片的一个SPAN。现在不知道是什么原因导致这两个元素的Y值不一样。
我最后的解决方法是在Ext.app.SearchField的代码中override afterRender的定义:

    afterRender: function() {
        
var y;
        
if (Ext.isIE && !this.hideTrigger && this.el.getY() != (y = this.triggers[1].getY())) {
            
this.el.position();
            
this.el.setY(y);
        }
    }
也就是在比较的时候将比较对象由外层的SPAN换成里面的具体的某个图片。
虽然这样解决了问题,但是还是没有弄明白之前的方法为什么是错误的。

抱歉!评论已关闭.