js的事件主要分为两类:浏览器事件和自定义事件
A.先看看Ext是如何自定义事件的
第一步:定义一个自定义"类"(js没有类的概念),添加属性、方法和事件
var Person = function(name,age){
//属性
this.name = name;
this.age = age;
//方法
this.eat:function(){
}
//添加事件
this.addEvents('walk','eat');
};
第二步:让类继承Ext.Observable(定义了一些基本的事件机制),为对象添加事件监听
Ext.extend(Person,Ext.util.Observable,{扩展的属性和方法});
var p = new Person('rzy',20);
p.on('eat',function(e,el,args){},scope,args);
第三步:触发对象的事件
p.fireEvent('事件名',参数列表...);
完整的代码:
var Person = function(name,age){
this.name = name;
this.age = age;
this.eat:function(){
}
this.addEvents('walk','eat');
};
Ext.extend(Person,Ext.util.Observable,{扩展的属性和方法});
var p = new Person('rzy',20);
p.on('eat',function(){},scope,args);
p.fireEvent('事件名',参数列表...);
B.再来看看浏览器事件(onclick,onmouseover,oncontextmenu,onkeyup...)
举一个例子吧
<html>
<head>
<link type="text/css" rel="stylesheet" href="extjs/resource/css/ext-all.css"/>
<script type="text/javascript" src="extjs/adapter/ext/ext-base.js"></script>
<script type="text/javascript" src="extjs/ext-all.js"></script>
<script type="text/javascript">
var fn = function(){
Ext.get('btn').on('click',function(e,btn){
alert('事件机制');
},this,args);
};
Ext.onReady(fn);
</script>
</head>
<body>
<input id="btn" type="button" value="点我"/>
</body>
</html>
接下来,关键的时候到了。现在来看看原生js的事件机制吧,这有助于你学习任何js框架(主要是解决跨浏览器的问题)
首先看看原生js如何为对象附加浏览器事件吧(以IE和FF为例)
IE:obj.attachEvent('onclick',function(){});
FF:obj.addEventListner('click',function(){},false);
在这里提一下事件对象event
IE:是作为一个全局变量window.event
FF:当事件触发时,必须显示的作为第一个参数来传递
Ext:EventObject
举一个例子吧
<html>
<head>
<link type="text/css" rel="stylesheet" href="extjs/resource/css/ext-all.css"/>
<script type="text/javascript" src="extjs/adapter/ext/ext-base.js"></script>
<script type="text/javascript" src="extjs/ext-all.js"></script>
<script type="text/javascript">
var ff = function(e){
var sender= e?e.target:window.event.srcElement;
alert(sender);
};
</script>
</head>
<body>
<input id="btn" type="button" value="点我" onclick=ff(e);/>
</body>
</html>
个人不太喜欢上面传统的这种侵入式的事件定义方式,改为注记式
document.getElementById('btn').onclick = ff;//注意这里绑定的是方法的引用ff,而不是ff();
但是问题又出现了原生的js只能单一绑定,要再绑定一个点击事件就会覆盖前面的
该Ext出场了,它可以为元素绑定多个句柄,它是怎么做到的?去看看Ext关于事件机制的这部分源码吧,特别是观察者模式
分享到:
相关推荐
这里的`ChildClass`是新创建的子类,`ParentClass`是其父类,第三个参数是子类的额外属性和方法。 **EXTJS的类系统** EXTJS有一个完整的类系统,它基于Sencha的JSClass库。每个EXTJS组件都是一个类的实例,这些类...
在Web应用中,我们可以使用JavaScript编写自定义函数,或者利用第三方库如SheetJS (js-xlsx) 来解析和计算Excel公式。 4. **编辑和格式化**:实现单元格的编辑功能,允许用户输入和修改数据。同时,我们需要考虑...
1. **基础篇**: 介绍ExtJS的基本架构和使用环境,讲解如何创建第一个ExtJS应用。 2. **组件篇**: 详述各组件的使用方法,如窗口、面板、按钮等,以及如何自定义组件。 3. **数据篇**: 深入探讨数据模型、数据存储和...
EXT2.0作为其第二个主要版本,相较于EXT1有着显著的改进,尤其在性能和可靠性方面。这篇中文文档详细介绍了EXT2.0的结构、工作原理以及相关的管理技巧,对于Linux系统的使用者和管理员来说,具有很高的学习和参考...
7. **工具或插件**: 可能介绍了一些辅助开发的工具,如调试器、代码生成器,或者是增强Ext.field.Select功能的第三方插件。 由于没有具体的博客内容,以上都是基于标题和标签的合理猜测。要获取更具体的信息,你...
4. **事件处理**:深入研究Gwt-Ext的事件模型,学习如何监听和响应各种组件事件,以及如何自定义事件。 5. **国际化**:实现Gwt-Ext应用的多语言支持,包括资源文件的配置和语言切换。 在"进阶篇"中,你将接触到更...
标题中的"ext3.3正式版发布"指的是Linux操作系统中的一种文件系统——EXT3的第三个主要版本的发布。EXT3,全称为“Third Extended Filesystem”,是Linux下的一个日志式文件系统,它在1993年由Rene Rebeau开发,并在...
"读Ext之十五(操作批量元素)"这篇博客文章可能详细讲解了如何在ExtJS中对多个DOM元素进行批量操作,这对于提高代码效率和减少重复工作至关重要。在ExtJS中,处理一组元素时,我们通常会使用CompositeElementLite类...
Ext4是Extended File System系列的第四个主要版本,旨在提高其前一代Ext3的性能、可扩展性和可靠性。它引入了许多新特性,如大文件支持(最大可至16EB)、更大的文件系统(最大64PB)和更多的链接数(最多64000个硬...
通过调用 `store.load()` 方法来加载数据,其中传入的参数 `{start:0, limit:3}` 表示从第0条数据开始,每次只加载3条数据。 5. **配置 PagingToolbar**: 创建了一个 `PagingToolbar` 组件,并设置了各种属性,...
"ux"是ExtJS中的一个特殊命名空间,用于存放第三方开发的组件和插件。 在Ext.ux.FileSelector中,"FileSelector.js"和"fileSelectorCore.js"是核心脚本文件。"FileSelector.js"通常包含了组件的定义、事件处理和...
本文是 Visual Studio 2008 可扩展性开发系列的第三篇,主要介绍 Add-In 的事件和生命周期。在上一篇中,我们已经了解了 Add-In 的基本结构和生成代码的过程。现在,我们将深入探讨 Add-In 的事件和生命周期,以便更...
此外,还有一些第三方工具如EXTJS Debug Wizard,它可以帮助开发者快速定位EXTJS应用中的错误和性能瓶颈。 总的来说,EXTJS的TabPanel组件是构建复杂Web界面的关键部分,而通过源码学习和使用相关工具,开发者可以...
- **DOM Level 2式登记**(addEventListener):遵循W3C标准,支持事件捕获和冒泡阶段,可以为同一个事件添加多个处理函数,并通过第三个参数控制事件处理流程。 2. **事件流**: - **IE事件流**:仅支持冒泡模型...
"0.3.2"是版本号,表示这是该库的第三个重大更新,第二次次要更新,并且是第二次修正更新。".tar.gz"则是打包格式,表明这是一个使用tar命令打包并使用gzip压缩的文件,这是在Linux和Unix系统中常见的归档和压缩方式...
Linux私房菜基础学习篇(第三版)是一本专注于Linux基础知识的教程书籍,旨在帮助读者快速掌握Linux操作系统的基本操作、管理技巧以及相关概念和术语。 本书内容覆盖了Linux操作系统中的众多关键知识点,其中包括但...
它可能会涵盖Ext JS的架构、组件模型、事件处理机制等核心概念。 4. **ExtJS实用开发指南.pdf** - 这是另一个关于Ext JS的PDF文件,标题表明它是一本实用的开发指南,可能包含实际开发项目中的技巧、最佳实践和案例...
31. **Hardwaresupport**:在第三章第1.2节中提及。这部分内容讨论了Linux对于各种硬件的支持情况。 32. **hdparm**:在第八章第3.5节中解释。hdparm命令用于测试磁盘性能和显示磁盘参数。 33. **head**:在第七...