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>