ExtJS事件處理

來源:互聯網
上載者:User

1、標準的事件綁定方式(1)

<html>
 <head>
  <title>標準的事件綁定方式(1)</title>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
 </head>
 <script language="JavaScript">
 function hello(){ alert('hello'); }
 </script>
 <body>
 <input type='button' id='btn' value='ok' onclick='hello()'>
 </body>
</html>

2、標準的事件綁定方式(2)只適合IE瀏覽器 document.getElementById('btn').attachEvent('onclick',hello1);

<html>
 <head>
  <title>標準的事件綁定方式(2)</title>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
 </head>
 <body>
  <input type='button' id='btn' value='ok'>
 </body>
<script language="JavaScript">
 function hello1(){
  alert('hello1');
 }
 function hello2(){
  alert('hello2');
 }
 var button = document.getElementById('btn');
 button.attachEvent('onclick',hello1);//該方法適用於IE瀏覽器
 button.attachEvent('onclick',hello2);
</script>

3、ExtJS方式的事件綁定

<HTML>
 <HEAD>
  <TITLE>ExtJS方式的事件綁定</TITLE>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <link rel="stylesheet" type="text/css" href="../../ext-4.0/resources/css/ext-all.css" />
  <script type="text/javascript" src="../../ext-4.0/bootstrap.js"></script>
  <script type="text/javascript" src="../../ext-4.0/locale/ext-lang-zh_CN.js"></script>
 </HEAD>
   <script type="text/javascript">
 Ext.onReady(function(){
  function hello1(){
   alert('hello1');
  }
  function hello2(){
   alert('hello2');
  }
  var button = Ext.get('btn');
  button.addListener('click',hello1);//綁定事件處理函數
  button.addListener('click',hello2);
 });
  </script>
 <BODY>
  <input type='button' id='btn' value='ok'>
 </BODY>
</HTML>

4、ExtJS支援的自訂事件

<HTML>
 <HEAD>
  <TITLE>ExtJS支援的自訂事件</TITLE>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <link rel="stylesheet" type="text/css" href="../../ext-4.0/resources/css/ext-all.css" />
  <script type="text/javascript" src="../../ext-4.0/bootstrap.js"></script>
  <script type="text/javascript" src="../../ext-4.0/locale/ext-lang-zh_CN.js"></script>
 <script type="text/javascript">
  //建立Person類
  var Person = Ext.extend(Ext.util.Observable,{
   constructor : function(name){
      this.name = name;
      this.sayNum = 0;
      this.say = function(){
     if(this.sayNum < 2){
      this.sayNum += 1;
      alert('I am '+name);
     }else{
      this.sayNum = 0;//觸發自訂事件後計數器歸零
      this.fireEvent('onSay',this);//激發自訂事件
     }
      }
      this.addEvents({//加入自訂事件
      "onSay" : true
      });
   }
  });
  var per = new Person('tom');//建立對象
  //為自訂事件綁定處理函數
  per.addListener('onSay',function handler(){
   alert('發生了自訂事件');
  });
 </script>
 </HEAD>
 <BODY>
 <input type='button' value='say' onclick='per.say()'>
 </BODY>
</HTML>

5、Firefox瀏覽器addEventListener方法樣本

<html>
 <head>
  <title>Firefox瀏覽器addEventListener方法樣本</title>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
 </head>
 <body>
  <input type='button' id='btn' value='ok'>
 </body>
<script language="JavaScript">
 function hello1(){
  alert('hello1');
 }
 function hello2(){
  alert('hello2');
 }
 var button = document.getElementById('btn');
 button.addEventListener('click',hello1,false);
 button.addEventListener('click',hello2,false);
</script>
</html>

6、適合IE

<HTML>
 <HEAD>
  <TITLE>addListener綁定處理函數樣本</TITLE>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <link rel="stylesheet" type="text/css" href="../../ext-4.0/resources/css/ext-all.css" />
  <script type="text/javascript" src="../../ext-4.0/bootstrap.js"></script>
  <script type="text/javascript" src="../../ext-4.0/locale/ext-lang-zh_CN.js"></script>
  <script type="text/javascript">
        //繼承自Ext.util.Observable
  var Person = Ext.extend(Ext.util.Observable,{
   constructor : function(name){
      this.name = name;
      this.say = function(){
     this.fireEvent('onSay',this.name);//激發自訂事件
      }
      this.addEvents({//加入自訂事件
      "onSay" : true
      });
   }
  });
  var per = new Person('tom');//建立對象
  function test(name){
   alert("I'am " + name);
  }

  //為自訂事件綁定處理函數
  per.addListener('onSay',test(name));
  
  </script>
 </HEAD>
 <BODY>
 <input type='button' value='say' onclick='per.say()'>
 </BODY>
</HTML>

7、使用各種瀏覽器

<HTML>
 <HEAD>
  <TITLE>addListener綁定處理函數樣本</TITLE>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <link rel="stylesheet" type="text/css" href="../../ext-4.0/resources/css/ext-all.css" />
  <script type="text/javascript" src="../../ext-4.0/bootstrap.js"></script>
  <script type="text/javascript" src="../../ext-4.0/locale/ext-lang-zh_CN.js"></script>
  <script type="text/javascript">
        //繼承自Ext.util.Observable
  var Person = Ext.extend(Ext.util.Observable,{
   constructor : function(name){
      this.name = name;
      this.say = function(){
     this.fireEvent('onSay',this.name);//激發自訂事件
      }
      this.addEvents({//加入自訂事件
      "onSay" : true
      });
   }
  });
  var per = new Person('tom');//建立對象

  //為自訂事件綁定處理函數
  per.addListener('onSay',function(name){
   alert("I'am " + name);
  });
  
  </script>
 </HEAD>
 <BODY>
 <input type='button' value='say' onclick='per.say()'>
 </BODY>
</HTML>

8、

<HTML>
 <HEAD>
  <TITLE>攔截器使用樣本Observable.capture</TITLE>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <link rel="stylesheet" type="text/css" href="../../ext-4.0/resources/css/ext-all.css" />
  <script type="text/javascript" src="../../ext-4.0/bootstrap.js"></script>
  <script type="text/javascript" src="../../ext-4.0/locale/ext-lang-zh_CN.js"></script>
  <script type="text/javascript">
 //繼承自Ext.util.Observable
 var Person = Ext.extend(Ext.util.Observable,{
  constructor : function(name){
     this.name = name;
     this.say = function(){
    this.fireEvent('onSay',this.name);//激發自訂事件
     }
     this.addEvents({//加入自訂事件
     "onSay" : true
     });
  }
 });
 var per = new Person('tom');//建立對象
  
 per.addListener('onSay',handler);//為自訂事件綁定處理函數
 function handler(){//事件處理函數
  alert('發生了自訂事件');
 }
 //為per對象添加攔截器
 Ext.util.Observable.capture(per,captureFunction);
 //攔截函數
 function captureFunction(eventName){
  if(eventName == 'onSay'){//事件名稱是onSay則返回false終止事件的執行
   alert("攔截事件:“"+eventName+"”。");
   return false;
  }
  return true;
 }
  </script>
 </HEAD>
 <BODY>
 <input type='button' value='say' onclick='per.say()'>
 </BODY>
</HTML>
9、

<HTML>
 <HEAD>
  <TITLE>addManagedListener受管事件監聽器</TITLE>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <link rel="stylesheet" type="text/css" href="../../ext-4.0/resources/css/ext-all.css" />
    <STYLE TYPE="text/css">
 .newIcon { background-image: url(../chapter03/images/new.gif) !important; }
 .openIcon { background-image: url(../chapter03/images/open.gif) !important; }
 .saveIcon { background-image: url(../chapter03/images/save.gif) !important; }
  </STYLE>
  <script type="text/javascript" src="../../ext-4.0/bootstrap.js"></script>
  <script type="text/javascript" src="../../ext-4.0/locale/ext-lang-zh_CN.js"></script>
 </HEAD>
<BODY STYLE="margin: 10px"></BODY>
  <script type="text/javascript">
 Ext.onReady(function(){
  function createFn(){
   alert('建立');
  }
  function openFn(){
   alert('開啟');
  }
  function saveFn(){
   alert('儲存');
  }
  Ext.create('Ext.toolbar.Toolbar',{//建立工具列
   renderTo: Ext.getBody(),
   bodyPadding: 5,
   width:300,
   items : [
       {text:'建立',id:'createBtn',iconCls:'newIcon'},
    {text:'開啟',id:'openBtn',iconCls:'openIcon'},
    {text:'儲存',id:'saveBtn',iconCls:'saveIcon'},
    {text:'銷毀建立按鈕',id:'destroy1',handler : function(){
     //銷毀建立按鈕
     Ext.getCmp('createBtn').destroy();
     Ext.getCmp('destroy1').destroy();
    }}
   ]
  });
  var createBtn = Ext.getCmp('createBtn');
  createBtn.on('click',createFn);
  //以下的事件綁定將受createBtn組件是否銷毀的控制,如果createBtn組件銷毀
  //了則事件綁定同時解除。
  createBtn.addManagedListener(Ext.getCmp('openBtn'),'click',openFn);
  createBtn.addManagedListener(Ext.getCmp('saveBtn'),'click',saveFn);
 });
  </script>
</HTML>
10、

<HTML>
 <HEAD>
  <TITLE>relayEvents傳播分發事件</TITLE>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <link rel="stylesheet" type="text/css" href="../../ext-4.0/resources/css/ext-all.css" />
  <script type="text/javascript" src="../../ext-4.0/bootstrap.js"></script>
  <script type="text/javascript" src="../../ext-4.0/locale/ext-lang-zh_CN.js"></script>
 <script type="text/javascript">
  //建立Employee工人類
  var Employee = Ext.extend(Ext.util.Observable,{
   constructor : function(config){
      this.name = config.name;
      this.eat = function(){
     this.fireEvent('startEat',this);//激發開始吃飯事件
     this.fireEvent('finishEat',this);//激髮結束吃飯事件
      }
      this.addEvents({//加入自訂事件
      "startEat" : true,//開始吃飯事件
      "finishEat" : true//結束吃飯事件
      });
      Employee.superclass.constructor.call(this, config)
   }
  });
  
  //定義Waiter服務員類
  var Waiter = Ext.extend(Ext.util.Observable,{
   constructor : function(config){
    Waiter.superclass.constructor.call(this, config);
   }
  });
  //建立員工對象
  var emp = new Employee({name:'tom'});
  //為自訂事件綁定處理函數
  emp.addListener('startEat',function(){
   alert(this.name + '開始吃飯了。');
  });
  emp.addListener('finishEat',function (){
   alert(this.name + '吃完飯,可以收拾盤子了。');
  });
  //建立服務員對象
  var waiter = new Waiter();
  //使服務員對象與員工對象的finishEat事件進行關聯
  //也就是說當員工對象的finishEat事件發生後,先執行自身的事件監聽器,
  //然後事件會傳遞到服務員對象中,激發服務員對象的finishEat事件。
  waiter.relayEvents(emp, ['finishEat']);
  waiter.on('finishEat',function(){
   alert('服務員開始收拾盤子。');
  });
 </script>
 </HEAD>
 <BODY>
 <input type='button' value='員工吃飯' onclick='emp.eat()'>
 </BODY>
</HTML>

11、

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<HTML>
 <HEAD>
  <TITLE>Ext.EventObject樣本</TITLE>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <link rel="stylesheet" type="text/css" href="../../ext-4.0/resources/css/ext-all.css" />
  <script type="text/javascript" src="../../ext-4.0/bootstrap.js"></script>
  <script type="text/javascript" src="../../ext-4.0/src/core/src/locale/ext-lang-zh_CN.js"></script>
 </HEAD>
<BODY>
 <input id='buttonTest' type='button' value='click'>
</BODY>
<script type="text/javascript">
 var btn = Ext.get('buttonTest');
 btn.addListener('click',handler);//為click事件綁定處理函數
 function handler(e){//事件處理函數
  //擷取事件發生時的x座標
  var x = e.getPageX();
  //擷取事件發生時的y座標
  var y = e.getPageY();
  var msg = '事件發生座標 : x='+x+' y='+y;
  alert(Ext.EventManager.getPageXY(e));
  alert(msg);
 }
</script>
</HTML>
1、

 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<HTML>
 <HEAD>
  <TITLE>Ext.EventManager應用舉例</TITLE>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <link rel="stylesheet" type="text/css" href="../../ext-4.0/resources/css/ext-all.css" />
  <script type="text/javascript" src="../../ext-4.0/bootstrap.js"></script>
  <script type="text/javascript" src="../../ext-4.0/src/core/src/locale/ext-lang-zh_CN.js"></script>
  <script type="text/javascript">
  Ext.onReady(function(){
   Ext.EventManager.addListener('btn','click',handler);//綁定處理函數
   function handler(e){//事件處理函數
    //擷取事件發生時的x座標
    var x = e.getPageX();
    //擷取事件發生時的y座標
    var y = e.getPageY();
    var msg = '事件發生座標 : x='+x+' y='+y;
    alert(Ext.EventManager.getPageXY(e));
    alert(msg);
    alert('hello');
   }
   /**function handler(){//事件處理函數
    alert('hello');
   }*/
  });
  </script>
 </HEAD>
 <BODY>
 <input type='button' value='say' id='btn'>
 </BODY>
</HTML>

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.