EXT 3.x 使用详解之Ext.History浏览器前进后退功能(一)

先来做个例子吧,这里写一个ext官方的例子,注意注释:

<%@ page language="java" pageEncoding="UTF-8"%>
<%@ include file="/common/taglib.jsp"%>
//自己加入ext相应的css和js,这里就不再写明了
<html>
	<head>
		<title>Ext3浏览器前进后退功能</title>
		<script type="text/javascript">
		Ext.onReady(function() {
			
			//初始化history组件
    		Ext.History.init();
    
			//设置截断符
		    var tokenDelimiter = ':';
		    
		    
		    var tp = new Ext.TabPanel({
		        renderTo: Ext.getBody(),
		        id: 'main-tabs',
		        height: 300,
		        width: 600,
		        activeTab: 0,//默认显示第一个标签
		        
		        items: [{
		            xtype: 'tabpanel',
		            title: 'Tab 1',
		            id: 'tab1',
		            activeTab: 0,//默认显示第一个标签
		            tabPosition: 'bottom',//在下方
		            
		            items: [{
		                title: 'Sub-tab 1',
		                id: 'subtab1'
		            },{
		                title: 'Sub-tab 2',
		                id: 'subtab2'
		            },{
		                title: 'Sub-tab 3',
		                id: 'subtab3'
		            }],
		            
		            listeners: {
		                'tabchange': function(tabPanel, tab){
		                	//tab1切换时修改浏览器hash
		                    Ext.History.add(tabPanel.id + tokenDelimiter + tab.id);
		                }
		            }
		        },{
		            title: 'Tab 2',
		            id: 'tab2'
		        },{
		            title: 'Tab 3',
		            id: 'tab3'
		        },{
		            title: 'Tab 4',
		            id: 'tab4'
		        },{
		            title: 'Tab 5',
		            id: 'tab5'
		        }],
		        
		        listeners: {
		            'tabchange': function(tabPanel, tab){
		            		//main-tabs切换时修改浏览器hash
		                    Ext.History.add(tabPanel.id + tokenDelimiter + tab.id);
		            }
		        }
		    });
		    
		    //获取浏览器hash中#后面的字符串
		    Ext.History.on('change', function(token){
		        if(token){
		        //如果有字符串则进行相应处理
		            var parts = token.split(tokenDelimiter);
		            var tabPanel = Ext.getCmp(parts[0]);
		            var tabId = parts[1];
		            
		            tabPanel.show();
		            tabPanel.setActiveTab(tabId);
		        }else{
		        //如果没有字符串则直接默认第一个标签页
		            tp.setActiveTab(0);
		            tp.getItem(0).setActiveTab(0);
		        }
		    });
		});
		</script>
	</head>
	<body>
	<!-- Ext.History所需的form  begin-->
		<form id="history-form" class="x-hidden">  
             <input type="hidden" id="x-history-field" />  
             	<iframe id="x-history-frame">  
             </iframe>  
        </form> 
    <!-- Ext.History所需的form  end -->    
    
    
     <!-- 测试一下刷新 -->	
      <input type="button" onclick="Ext.History.fireEvent('change',Ext.History.getToken());" value="刷新">
      
     <!-- 测试一下直接使用add的效果 -->	 
      <input type="button" onclick="Ext.History.add('main-tabs:tab1');" value="第一页">
      
      <!-- 
      	最后解释下步骤,首先把tabchange事件绑定到Ext.History
      	然后再使用Ext.History来进行事件处理
        然后试试操作以后使用浏览器的前进后退就能看到效果了
       -->
	</body>
</html>

你可能感兴趣的:(JavaScript,jsp,浏览器,css,ext)