前几天工作中需要使用Ext的TabPanel标签页加载两个完整页面。就在网上查,看到了这篇文章:“Ext.TabPanel之第一式”。这篇文章讲解到如何在“用iframe加载其他完整页面的tabpanel”。但是,里面只加载了一个页面,而且切换页面时,是点击TabPanel外的一个“链接”,然后使用onclick事件来处理的。显然,不符合要求。不过,这篇文章也给我指明了方向,教会了如何使用TabPanel。可以照着这个思路做处理。 第一个方法: 照着那篇文章,同时参考ExtJS的API文档,写一个例子。步骤如下: 注:这里我只粘贴最主要的代码,至于ExtJS库的引入方法和需要引入的文件,请参考“深入浅出Ext JS(第二版)――学习笔记”;次要代码,可以自己补充。 1、首先在页面中引入ExtJS库。然后在index.jsp的body标签中,添加如下代码: 注:请把keyIndex.jsp和alarmIndex.jsp存放在这个index.jsp文件的同一目录下。这两个文件的内容可以随意填写,只需要能区分开就可以了。 2、在index.jsp文件的script(注意:这个标签要放在引入ExtJS库的script标签后面)标签中,添加生成TabPanel的代码。如下: 这个标签页就可以正确加载两个完整的页面了。 这里有两个问题需要注意: ①、在iframe id=""alarmFrame"……style="overflow:hidden;display:none;""中,我把这个标签的现实属性设置为:display:none。这时因为,如果我不设置成隐藏的话,在加载完之后,两个iframe的内容都会在页面上现实处理。这时不符合要求的。因为设置成隐藏。所以,需要添加事件处理。将它的现实属性修改为可见。另外,这个“两个iframe的内容都会在页面上”的问题只有在加载完成后,第一次切换标签页之前,才会有。当切换一次标签页之后就没有了。所以,只需要在第一次切换标签页时,把页面设置成可见即可。 ②、由于TabPanel的事件监听在加载时会自动执行一遍。而这时,我并不需要把《iframe id="alarmFrame"》设置设置成可见。所以,需要对事件处理需要做个特殊处理。详细处理方法。请见代码。 很显然,这种方法一些不足,主要是添加事件监听;同时,还要先把页面隐藏起来。我相信,还会有更好的实现方式。 第二种方法: 其实,我们只需要把这个iframe标签的内容放到TabPanel的配置项html中即可。而且,还没有第一种方法的缺点。具体步骤如下: 1、在index.jsp的body中,添加如下代码: ? 2、在index.jsp文件的script(注意:这个标签要放在引入ExtJS库的script标签后面)标签中,添加生成TabPanel的代码。如下: ? ? ?}); }); 执行,相信没什么问题。 最后,留给大家一个问题:在:“Ext.TabPanel之第一式”中,通过使用onclick事件改变src属性值的方式,来实现TabPanel页内容的切换。请问,能否通过TabPanel的tabchange事件改变src属性值的方式来实现标签页的切换? ? 注:本来想贴代码,方便大家使用。奈何编辑工具不给力,标签不能正常转换。如果需要代码,请给我留言,我发到各位的邮箱里。 (这是我发表到我自己博客上的文章贴出来和大家分享!) 更多内容,请见: ? ?http://www.ivvy.org/Ext.onReady(function(){
var firstActive = true; //处理加载时,事件监听自动执行的问题。
var kpiTab=new Ext.TabPanel({
renderTo:'kpiTab',
activeTab:0,
height:438,//设置TabPanel标签页的高度。当用viewport布局时,这个height可以省去
frame:true,
items:[
{
contentEl:"keyFrame",
title:"关键信息",
closable:false
},
{
contentEl:"alarmFrame",
title:"预警信息",
closable:false
}
],
listeners:{
'tabchange' : function(tp, panel){
if(firstActive){ //处理加载时,事件监听自动执行的问题。我们让第一次加载时不执行即可。
firstActive = false;
}else{
document.getElementById('alarmFrame').style.display='block';
}
}
}
});
});
详细解决方案
ExtJS中TabPanel用iframe加载其余完整页面的处理方法
热度:75 发布时间:2012-08-26 16:48:06.0
1 楼
atian25
2011-11-01
iframe还是丢给ManagedIFrame插件来关心吧
相关解决方案
- Extjs grid 失去选中行的列数据
- extjs 后台有数据,但是返回到页面为空,jsonStore加载错误,这是咋回事
- S2SH、EXTJS、JSON调整后,EXTJS接收不到Struts2的Action传回的值,无语
- extjs 简单有关问题
- extjs+struts2解决办法
- iframe 子页刷新父页有关问题 大神请帮忙看看
- WEB-INF 上的jsp文件,用ext tabpanel autoload url如何访问
- ExtJs 处理 datetime 有关问题
- 【EXTJS】iframe里嵌套ext.window,怎样使ext.window弹出到iframe外,该怎么解决
- Iframe 的使用有关问题
- jsp页面放在html《iframe》中中文没法正常显示 单独是可以显示正常的O(∩_∩)O~该怎么解决
- Tomcat + extjs 入门有关问题
- extjs ColumnModel 怎么实现表格中的数据小数点对齐
- Extjs 变量前的一个加号代表什么意思?解决方法
- extjs grid 怎么实现 行选中变色
- 请问一个页面有关问题-iframe
- ExtJs 提交表单的小疑点
- iframe 鼠标打击有关问题
- AJAX 的TabContainer控件 嵌套 iframe 标签页 标签页面过长时自动顺应
- iframe 中使用UEditor有关问题
- Iframe top.history.go(@Num)有关问题
- iframe Session丢失 跳转到登陆页面有关问题
- iframe 局部刷新 带图片的刷新按钮 如何弄
- 自己写的Asp.net Ajax,Jquery,ExtJs 三种Ajax技术框架比较,希望大家提提意见,多谢
- treeview 和 iframe 有关问题
- 大家都把导航条,页头页脚做到哪里,独立页面用<iframe>调用,还是母板页,望前辈指点,该怎么解决
- iframe,该如何处理
- Iframe 调用父窗体js函数解决办法
- 【聊天室】大师们,该怎么点击“提交”按钮把信息显示在 <iframe>里面 呢
- Iframe 中 如何才能把控件显示出来?不通过src