Ext切换tab页导致内嵌的<object>重新加载数据

目前在项目中遇到一个问题,在panel中内嵌了一个<object data ="demo.svg"></object>,panel放置在tabPanel中,在每次切换tab页的时候,导致<object>中data都重新加载数据demo.svg。(注:这个现象出现在chrome,fireFox中,在IE9中不会重新加载数据)。

在网上查找了相关资料,很多人提到在tabPanel下嵌入flash也出现了类似问题,导致视频重新加载,导致该问题的主要发生的事情有:切换tab页的时候,其实是将上一个tab的div设置为“display:none”,当再次切换回来时,将div又设置为“display:block”。于是可以定位到是设置display属性导致的。

网上有人提出了解决方法,如下:

1、设置内嵌了<object>的panel的属性:hideMode:'visibility'。因为visibility和display是有区别的,visibility设置为hidden时,其在文档内的占位还是存在的,只是不显示而已。

2、设置tabPanel的监听事件“beforetabchange”:

 listeners:{
	beforetabchange:function(tabPanel, newCard, oldCard, opts){
         oldCard.setHeight(0);
	 oldCard.setWidth(0);
}

}


我按照上述方法使用了,但是还是有点问题,必须来回切换两次,才能保证新开的tab页显示正常。

经过长时间找问题,发现是由于设置的height=0其实并没有立即生效,所以要来回切换两次。

于是找到一种新的解决方法,设置listeners的tabchange事件:

tabchange:function(tabPanel,newCard,oldCard,eOpts){
   					
                    if(oldCard.hideMode == 'visibility'){
                    	oldCard.body.dom.parentNode.style.height = '0px';
                    }
                    if(newCard.hideMode == 'visibility'){
                    	newCard.body.dom.parentNode.style.height = '100%';
                    }
   				}


问题终于解决了,松了一口气,花了半天的时间,还是有点收获,不错,\(^o^)/~


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值