Extjs3.3.1 gridview focusRow函数在FIREFOX下的bug

本文详细介绍了在使用Grid视图时遇到的一个在Firefox浏览器下加载后滚动回顶部的问题,通过分析源代码,揭示了问题根本在于Firefox浏览器的Gecko内核做了1毫秒延迟处理。提供了三种解决方案来解决此问题,包括修改源码、重载方法和使用setTimeout函数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目的:当加载好grid后,用户想grid定位到指定的某一个行,这时候就需要调用focusRow

代码:grid.getView().focusRow(15)//定位到第16行

现象:IE chrome 测试都可以 但是FF依然会定位到最顶部

结果:经过各种测试以及对比浏览器,然后查看源码总算找到问题的根本原因了。。如下源代码是gridview中的一个私有函数,

虽然没去验证过,但是有现象可以断定,该函数是可以再grid。store。load事件里激发该onload事件,

所以 grid.store.loadData(data);grid.getView().focusRow(15),结合以下源码,自然明了了。 FF下(是GECKO 内核)做了一个事件1mS延迟所以导致我们的代码先执行了focusRow,然后在作用scrollToTop。

源码:onLoad : function() {
        if (Ext.isGecko) {
            if (!this.scrollToTopTask) {
                this.scrollToTopTask = new Ext.util.DelayedTask(this.scrollToTop, this);
            }
            this.scrollToTopTask.delay(1);
        } else {
            this.scrollToTop();
        }
    },

解决方案:1修改源码,(没把握就别这么干了), 2重载该方法,这个酌情可以使用, 3, 最安全的方法 setTimtout(function(){ grid.getView().focusRow(15);   },2 )


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值