如何获取Ext中没有active的tab页里的对象

系统首页底部有个Ext TabPanel,默认是收缩的,该TabPanel包含两个tab,并且activeTab:0,现在我打开系统首页,点击某个菜单“显示Map2”,要求最大化第二个tab,并获取该tab中的html页面(页面嵌套一个Flash对象)中的Flash Object,但是因为activeTab默认是0,所以在获取第二个tab中的对象报脚本错误。

以下是Tab Panel部分代码:

[code="java"]
titlebar: true,
height: 300,
margins:'0 0 0 0',
items:
new Ext.TabPanel({
id: 'flashId',
border:false,
activeTab:0,
tabPosition:'bottom',
items:[{
id:'web_map_tab1',
html:'/flash/map2.html?token=${userContext.sessionId}" id="__webMap2__" name="__webMap2__" frameBorder="0" scrolling="auto" top="0" width="100%" height="100%">',
title: 'Map2',
autoScroll:true
}]
}),
.....
[/code]

其中map2.html中的内容为:

[code="java"]
name="mapObj2" id="mapObj2"
codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0"
width="690" height="510">


pluginspage='http://www.macromedia.com/shockwave/download/index.cgi?P1_Pr od_Version=ShockwaveFlash'
type='application/x-shockwave-flash' width=690 height=510>

[/code]

点击“显示Map2”的JS方法:

[code="java"]
function showMap2(){//打开第二个TAB页面并获取Flash对象
window.top.maximizeFlash();//最大化MAP2

var webFrame = window.top.document.getElementById("__webMap2__");
var flashObj = webFrame.contentWindow.document.getElementById("mapObj2");//mapObj2为第二个Tab指向页面的object id

//******************************
//这里取不到flashObj,报脚本错误,当把activeTab改成1的时候,就可以得到
//但是需求是默认activeTab只能是0
//******************************

}

/**

  • 最大化MAP2区域,并显示Map2中的FLASH */ function maximizeFlash(){
    Ext.getCmp('webGisId').expand(true); Ext.getCmp('webGisId').tools['maximize'].dom.click(); Ext.getCmp('flashId').setActiveTab(1); //这里修改也无效 } [/code]

因为对EXT不太熟,希望熟悉的人可以指点一下,谢谢!

2个回答

上面的回答有误,你加个deferredRender:false应该就可以了

[code="java"]

new Ext.TabPanel({
deferredRender:false

[/code]

因为如果没有点击tab默认是不会render的,所以mapObj2取不到

你可以先setActiveTab一下再取

[code="java"]
function showMap2(){//打开第二个TAB页面并获取Flash对象

window.top.maximizeFlash();//最大化MAP2

Ext.getCmp('flashId').setActiveTab(1);
Ext.getCmp('flashId').setActiveTab(0);

var webFrame = window.top.document.getElementById("__webMap2__");  
var flashObj = webFrame.contentWindow.document.getElementById("mapObj2");//mapObj2为第二个Tab指向页面的object id  

}

[/code]

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问