小弟遇到一个严重的问题 用ext 中的 tablpanle 包含 iframe 出现下列情况
比如 左边是树行菜单,点一个树形菜单 增加一个tab 每个tab加载一个iframe,打开tab加载iframe没有问题 ,但是如果关了其中一个tab,然后再打开任何一个tab,那么ifrmame都显示的是最后关掉tab中的iframe,百思不得其解,请大哥们赐教,先上代码
function addTab(url,name,id) { var tmptab = tabsDemo.getItem("newtab"+id); if(tmptab)tabsDemo.remove(tmptab,true); tabsDemo.add({ title:name, layout:'fit', id:"newtab"+id, //autoScroll:true, autoDestroy:false, enableTabScroll:true,//挤的时候能够滚动收缩 closable:true, html : '<div id="aa"><iframe id = "tabiframe" src="'+url+'"/> </div>' }).show(); alert(Ext.get(''+id+'').dom.src); Ext.get("tabiframe").dom.src = url; }
[code="java"]
function openMain(href,name){
try{
//当标签数组中有数据时,开始比对当前操作的超链接所生成的标签页是否已经存在。如果存在就不再创建相同的标签页,对标签页进行显示操作
if (addIndex > 0){
for (var i=0; i<tabsArray.length; i++){
if (tabsArray[i].title == name){
tabsArray[i].show();
return;
}
}
}
//创建链接标签页
tabsArray[addIndex] = tabs.add({
title: name,
html: '<iframe scrolling="auto" width="100%" height="100%" frameborder="0" src="'+href+'"></iframe>',
closable:true, //是否可关闭
destroy:function(){ //销毁当前标签页面所触发的事件
var bakArray = new Array();
var bakIndex = 0;
//比对当前销毁的标签在标签对象中的位置,比对成功后就将当前标签页删除。没有匹配到的标签对象,将移动到备份数组中
for (var removeIndex=0; removeIndex<tabsArray.length; removeIndex++){
if (tabsArray[removeIndex].title == name){
tabsArray[removeIndex] = ''; //删除当前标签页
}else{
bakArray[bakIndex] = tabsArray[removeIndex];
bakIndex++;
}
}
tabsArray = bakArray; //重新排序标签页数组
addIndex = bakArray.length; //重定义标签数组累加器
},
autoScroll:true
}).show(); //创建标签页完成后显示
addIndex++;
}catch(e){
alert(e.message);
}
}
[/code]
以上代码是我们项目用到的tab选项卡功能,也是使用的iframe打开新页面,但是没有出现过你说的情况,以上代码可以给你点参考意见
function addNewTab(newUrl,urlName,icon,sqId){
var idd="GDCM"+sqId;
//获取面板
var tabEle = centerTabPanel.getItem(idd);
if(tabEle){
centerTabPanel.remove(tabEle,true);
}
//判断面板是否打开
//if(!tabEle){
tabEle=centerTabPanel.add({
closable:true,
id:idd,
title:urlName,
html:'<iframe scrolling="auto" frameborder="0" width="100%" height="100%" src='+newUrl+' id="tabFrame"></iframe>',
autoShow:true,
iconCls:icon
});
//}
centerTabPanel.setActiveTab(tabEle);
}
function removeTabByIdd(sqId){
var idd="GDCM"+sqId;
try{
var tabEle = centerTabPanel.getItem(idd);
if(tabEle){
centerTabPanel.remove(tabEle,true);
}
}catch(e){}
}
function removeTabByIdd(sqId){
var idd="GDCM"+sqId;
try{
var tabEle = centerTabPanel.getItem(idd);
if(tabEle){
centerTabPanel.remove(tabEle,true);
}
}catch(e){}
}
这个方法是你动态删除的时候需要用的,比如你想点击一个按钮来删除某个TAB就可以用这个方法,和addTab放着一起
tab那个小叉有关闭的方法,这个方法就是说你在别的网页中如有有关闭的按钮,想关闭当前操作的TAB,或者是想关闭指定ID的TAB可以用这个方法,不需要加入到关闭事件中的