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换成里面的具体的某个图片。
虽然这样解决了问题,但是还是没有弄明白之前的方法为什么是错误的。

相关文章:

  • 2021-12-31
  • 2022-12-23
  • 2021-12-11
  • 2021-07-14
  • 2021-12-10
  • 2021-06-01
  • 2021-09-03
  • 2021-12-20
猜你喜欢
  • 2021-10-09
  • 2021-12-19
  • 2022-12-23
  • 2021-09-06
  • 2021-09-18
  • 2022-01-02
  • 2021-08-15
相关资源
相似解决方案