`
adamed
  • 浏览: 183821 次
社区版块
存档分类
最新评论

深入详解EXT2.3事件增加及删除源码

 
阅读更多

先看addListener也就是Ext里面的on方法

 

/*
* 注册事件函数,返回是否注册成功
* el : String/HTMLElement  一个html元素或其id,事件处理器将会被指定到其上 
* eventName : String  需要监听的事件类型 
* handler : Function 事件调用的处理函数。此函数将会被传递以下参数: 
* *****evt : EventObject   EventObject ,描述了事件。
*****t : Element    Element ,它是事件的目标(target)。
                 注意:此项可能被用delegate选项过滤。 
* 	****o : Object 来自调用addListener时的选项对象。 
* * 例子:
* el.addListener('click', this.onClick, this, 
*        {    single: true,    delay: 100, stopEvent : true,    forumId: 4})
*/
addListener : function( el , eventName , fn ) {
/* *********************************************************
getDom : function( el ) {
	if ( !el || !document ) {
		return null;
	}
	return el.dom ? el.dom : 
                   ( typeof el == 'string' ? document.getElementById( el ) : el );
}
********************************************************* */
el = Ext.getDom( el );
			
// 参数检查
if ( !el || !fn ) {
	return false;
}
			
// 如果是unload事件,那么直接添加在unloadListeners数组中,
//当window的onunload事件触发时执行
if ( "unload" == eventName ) {
	unloadListeners[unloadListeners.length] = [
				 el , eventName , fn
	];
	return true;
}
			
// 封装函数,处理event变量不兼容的问题
/* 	getEvent : function( e ) {
		var ev = e || window.event;
		if ( !ev ) {
			var c = this.getEvent.caller;
			while ( c ) {
				ev = c.arguments[0];
				if ( ev && Event == ev.constructor ) {break;}
				c = c.caller;
			}
		}
		return ev;
	} */
			var wrappedFn = function( e ) {
				return typeof Ext != 'undefined'
				    ? fn( Ext.lib.Event.getEvent( e ) )
				    : false;
			};
			var li = [ el , eventName , fn , wrappedFn ];
			var index = listeners.length;
			listeners[index] = li;
			// 下面语句就直接注册事件了
			this.doAdd( el , eventName , wrappedFn , false );
			return true;
		}
分享到:
评论

相关推荐

    深入浅出ExtJS第2版

    深入浅出ExtJS第2版+源码..1 下载EXT发布包 1 1.2 如何查看EXT自带的API和示例 1 1.3 为什么有些示例必须放在服务器上 才能看到效果 2 1.4 Hello World 2 1.4.1 直接使用下载的发布包 2 1.4.2 在项目中使用EXT...

    Ubuntu系统下安装Reviewboard详解

    ### Ubuntu系统下安装Reviewboard详解 #### 一、概述 本文档将详细介绍如何在Ubuntu系统上安装并配置Reviewboard,一款流行的代码审查工具。通过本文档的学习,您将能够掌握安装过程中所需的关键步骤以及相关软件的...

    LINUX系统开发技术详解---基于ARM

    2.3 典型ARM处理器简介.................................................................................................. 17 2.3.1 Atmel AT91RM9200..........................................................

    嵌入式Linux应用程序开发详解(完整版)

    - **4.2.4 S3C2410处理器详解**:深入分析了S3C2410这款嵌入式处理器。 - **4.3 嵌入式软件开发流程** - **4.3.1 嵌入式系统开发概述**:概述了嵌入式系统的开发过程。 - **4.3.2 嵌入式软件开发概述**:详细...

    extjs-ajax

    - **内容概览**: 该指南涵盖了详细的 ExtJS 框架使用方法、控件详细配置参数、属性、方法及事件介绍,以及如何与服务器端集成等高级话题。 - **适用人群**: 对于想要深入了解 ExtJS 并应用于实际项目中的开发者来说...

    extjs实用开发指南

    每个组件都有自己的配置选项、事件处理器和生命周期。 **3.2 常用组件** - **Panel**:最基本的容器组件,可以包含其他组件。 - **Button**:用于触发操作的标准按钮。 - **Grid**:用于显示表格数据。 - **Tree**...

    嵌入式学习 UBOOT

    ### 嵌入式Linux系统开发之UBOOT详解 #### 一、嵌入式Linux的发展与特点 **1.1 发展历程** 嵌入式Linux系统近年来得到了快速发展,特别是随着开源运动的兴起,Linux因其免费且开放源码的特性成为了众多嵌入式应用...

    embedded linux primer

    ext3是在ext2的基础上发展起来的,增加了日志记录功能,提高了数据的安全性和完整性。 **9.4 ReiserFS** ReiserFS是一种高性能的日志型文件系统,旨在提高文件访问速度。 **9.5 JFFS2** JFFS2是专为闪存设计的...

    linux启动过程.doc

    ### Linux启动过程详解 #### 一、Bootloader与引导机制 Linux系统的启动是一个复杂而精细的过程,本章节将深入探讨Linux系统从开机到用户登录这一过程中Bootloader的关键作用及其内部工作机制。 **1.1 Bootloader...

    tiny4412嵌入式系统搭建完整教程

    深入分析u-boot的源码有助于理解其内部工作机制。 **3.4.1 启动流程** 分析u-boot的启动流程,包括从上电到加载内核的整个过程。 **3.4.2 u-boot命令的执行代码分析** 详细解释了u-boot中各个命令的实现方式。 ...

    Linux嵌入式软件开发 PDF版本

    ### Linux嵌入式软件开发知识点概览 #### 第1章:Linux快速入门 - **1.1 嵌入式Linux基础** ...这些内容覆盖了Linux基础、命令使用、编程基础以及嵌入式系统的基础知识,为读者提供了全面深入的学习指南。

    嵌入式学习步骤

    ### 嵌入式学习步骤详解 #### 一、Linux基础 **1.1 安装Linux操作系统** - **知识点**: Linux发行版的选择(如Ubuntu、CentOS等),安装过程中的注意事项,图形化界面与命令行界面的区别。 - **技能**: 能够独立...

Global site tag (gtag.js) - Google Analytics