`

ExtJS中TabPanel用iframe加载其他完整页面的处理方法

 
阅读更多

前几天工作中需要使用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的代码。如下:

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';
	                }
	             }
	          }
	});
});

这个标签页就可以正确加载两个完整的页面了。

这里有两个问题需要注意:

①、在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.diguage.com/

 

1
2
分享到:
评论
1 楼 atian25 2011-11-01  
iframe还是丢给ManagedIFrame插件来关心吧

相关推荐

    extjs4.2.1 tabPanel刷新及关闭标签

    ### ExtJS 4.2.1 TabPanel 刷新与关闭标签...综上所述,ExtJS 4.2.1提供了丰富的API来处理`TabPanel`的各种操作,包括刷新和关闭标签页等功能。开发者可以根据实际需求灵活运用这些API,实现高效且功能丰富的用户界面。

    Extjs4.2 设置tabpanel当前活动页签的样式

    在tabpanel中,每个面板对应一个标签页签,使用户可以在多个面板之间进行切换。当用户点击某个标签页签时,该标签页签将变为当前活动页签,并且其样式将发生变化。 要设置tabpanel当前活动页签的样式,可以添加CSS...

    ExtJS tabPanel实例

    这两个文件可能是主入口文件或临时脚本,它们可能包含了初始化 `tabPanel`、处理数据交互或其他辅助功能的代码。例如,`index.js` 可能负责整个页面的布局和组件的实例化,而 `temp.js` 可能包含一些通用的函数或者...

    ExtJS TabPanel 标签操作

    ExtJS的TabPanel是其组件库中的一个核心组件,用于创建具有多个标签页的应用界面,每个标签页可以承载不同的内容。在本主题中,我们将深入探讨如何操作ExtJS的TabPanel,包括创建、添加、删除和切换标签页,以及...

    extjs动态添加tabpanel标签页支持pannel嵌入

    extjs动态添加tabpanel标签页支持pannel嵌入 逻辑代码在 MyWindow.js里面直接调用 方法 就可以

    extjs4.x tabpanel 动态加载panel和html例子

    在EXTJS 4.x框架中,`tabpanel`是用于创建多标签界面的组件,它可以方便地组织和切换多个视图。动态加载panel和HTML到tabpanel是提高应用性能和用户体验的有效方式,因为它允许按需加载内容,减少初始页面加载时间。...

    jQuery模仿ExtJS之TabPanel最新

    使用方法 页面引入jQuery.js、TabPanel.js、Fader.js、TabPanel.css new TabPanel({ renderTo:'tabs', width: '100%', height: '500px', active: 0, items: [{ title:'工作中心', html:'<iframe ...

    Extjs6-iframe-优化.rar

    在ExtJS6中,IFrame.js插件可能被用来创建和管理IFrame组件,以便在应用中加载外部资源或实现跨域通信。然而,根据描述,这个插件存在一个问题:在某些情况下,IFrame加载的内容可能无法正常访问。这可能是由于网络...

    extjs中Ext.Panel和TreePanel 组件动态加载本地页面数据

    在实际项目中,结合`jq`库(可能是jQuery的简写),可以方便地处理DOM操作,与EXTJS的组件交互,进一步增强动态加载的效果,比如添加动态加载的动画、错误处理等。 总结来说,`Ext.Panel`和`TreePanel`在EXTJS中是...

    TabPanel 加载页面

    在给定的标题"TabPanel加载页面"中,我们可以理解为讨论的是如何在`TabPanel`组件中动态加载页面内容。这通常涉及到以下几个关键知识点: 1. **动态加载**:在用户点击某个标签时,只加载对应的页面内容,而不是一...

    ExtJs中Store加载(load)时候提示信息

    在ExtJS中,`Store`对象负责从服务器获取数据并存储到客户端,供应用程序使用。为了在加载数据时给用户提供反馈,可以利用`beforeload`事件和`Ext.MessageBox.show`方法来实现加载提示。 #### 1. 使用`beforeload`...

    Extjs4.2 根据不同的数值设置tabpanel行的背景颜色

    通过以上步骤,我们不仅学习了如何在ExtJS 4.2中根据不同数值设置TabPanel中GridPanel行的背景颜色,而且还了解了如何利用CSS和JavaScript结合来实现灵活多变的界面效果。这种方法不仅适用于数值类型的数据,还可以...

    Extjs4树结构异步加载

    在本示例中,我们关注的是树结构的异步加载,这是一种优化性能的技术,避免一次性加载大量数据导致页面响应缓慢。 异步加载,也称为懒加载或需求加载,意味着当用户滚动、展开节点或者进行其他交互时,只加载当前...

    ExtJS扩展:垂直页签tabPanel

    在“ExtJS扩展:垂直页签tabPanel”这个主题中,我们将探讨如何在ExtJS中实现一个创新的垂直布局的页签(tab)组件,这在很多情况下可以提供更好的用户界面体验。 首先,我们看到有两个JavaScript文件,TabPanel.js...

    ExtJS构造动态异步加载

    在IT领域,特别是Web开发中,ExtJS是一个广泛使用的JavaScript框架,它提供了丰富的用户界面组件和强大的数据管理功能。本文将深入探讨如何使用ExtJS构建动态异步加载的树形结构,结合AJAX技术实现JSON数据的高效...

    Extjs动态加载菜单

    动态加载菜单是ExtJS中的一个关键特性,它允许在用户交互过程中动态地创建、修改和加载菜单项,提供了更灵活的用户界面设计。在“Extjs动态加载菜单”这个主题中,我们将深入探讨这一功能的实现方式以及相关技术。 ...

    ExtJs GridPanel延时加载.rar

    在给定的"ExtJs GridPanel延时加载.rar"文件中,主要涉及的核心概念是ExtJs中的GridPanel组件以及延时加载技术。GridPanel是ExtJs中一个非常重要的组件,它用于展示表格数据,而延时加载则是一种优化大量数据处理的...

    Extjs 动态加载树

    标题“Extjs 动态加载树”涉及到的是一个前端开发技术话题,主要集中在使用Extjs框架构建能够动态加载数据的树形结构。Extjs是一个基于JavaScript的组件化UI库,常用于开发富客户端应用。动态加载树(Dynamic ...

    extjs tree 异步加载树型

    异步加载树型是 ExtJS Tree 的一个重要特性,允许只在需要时动态加载子节点,从而提高页面的加载速度和用户体验。 异步加载通常通过 AJAX 请求实现,只有当用户展开一个节点时,才会向服务器请求该节点的子节点数据...

    ext使用--Panel和iframe联合使用时页面高度的解决方法

    本文将深入探讨如何在使用ExtJS时解决Panel与IFrame结合时页面高度自动适应的问题。 首先,我们需要了解`Panel`在ExtJS中的角色。Panel是容器组件,它可以包含其他组件,如按钮、表格、表单等。Panel有自己的布局...

Global site tag (gtag.js) - Google Analytics