addEventListener之handleEvent
addEventListener() 方法是将指定的事件监听器注册到目标对象上,当该对象触发指定的事件时,指定的回调函数就会被执行。语法:
element.addEventListener(type, listener[, useCapture]);
其中listener:当指定的事件类型发生时被通知到的一个对象。该参数必须是实现EventListener接口的一个对象或函数。即,第二个参数除了可以传入函数外,还可以传入对象。
interface EventListener {
// 注意:该接口属于DOM2, 所以IE6~IE8不能直接使用哦~
void handleEvent(Event evt);
};
1 var obj = {
2 name: 'foo',
3 handleEvent: function() {
4 alert('click name='+ this.name);
5 }
6 };
7 document.body.addEventListener('click', obj, false);
1 document.body.addEventListener('click', function() {
2 console.log(this == document.body); // output: true
3 }, false);
1 var obj = {
2 name: 'foo',
3 handleEvent: function() {
4 alert('click name='+ this.name);
5 }
6 };
7
8 document.body.addEventListener('click', obj, false);
9
10 function changeHandler() {
11 obj.handleEvent = function() {
12 alert("change the click handle!");
13 };
14 }
15
16 // 5秒后动态改变事件处理函数
17 setTimeout(function() {
18 changeHandler();
19 }, 5000);
1 var obj = {
2 name: 'foo',
3 handleEvent: function(e) {
4 switch(e.type) {
5 case "click":
6 console.log("click event");
7 break;
8 case "mousedown":
9 console.log("mousedown event");
10 break;
11 }
12 }
13 };
14
15 document.body.addEventListener('click', obj, false);
16 document.body.addEventListener('mousedown', obj, false);
这样可以把不同事件的处理逻辑放到一起,根据事件类型区分即可,而不用为每个事件类型定义不同的处理函数了。
因为处理逻辑都在同一对象中,也使程序更加“内聚”了。
有理解错误的地方,还望大家多多指教~
addEventListener之handleEvent的更多相关文章
- 关于 addEventListener 和 handleEvent 方法
使用 addEventListener 可以绑定事件,并传入回调函数. Mozilla 0.9.1 和 Netscape 6.1 之后的版本不但支持传递函数引用,也都允许直接把拥有 handleEve ...
- 【译】addEventListener 第二个参数
这是原文链接:Our Backwards DOM Event Libraries 浏览器APIs 先简单回顾一下各个浏览器提供了哪些绑定事件的接口. IE浏览器提供了element.attachEve ...
- HTML5 学习总结(三)——本地存储
一.HTML4客户端存储 B/S架构的应用大量的信息存储在服务器端,客户端通过请求响应的方式从服务器获得数据,这样集中存储也会给服务器带来相应的压力,有些数据可以直接存储在客户端,传统的Web技术中会 ...
- 前端试题本(Javascript篇)
JS1. 下面这个JS程序的输出是什么:JS2.下面的JS程序输出是什么:JS3.页面有一个按钮button id为 button1,通过原生的js如何禁用?JS4.页面有一个按钮button id为 ...
- HTML5 学习笔记(三)——本地存储
目录 一.HTML4客户端存储 1.1.提交表单发送到服务器的信息 1.2.客户端本地存储概要 二.localStorage 2.1.添加 2.2.取值 2.3.修改 2.4.删除 2.5.跨页面与跨 ...
- HTML5 学习笔记(三)——本地存储(LocalStorage、SessionStorage、Web SQL Database)
一.HTML4客户端存储 B/S架构的应用大量的信息存储在服务器端,客户端通过请求响应的方式从服务器获得数据,这样集中存储也会给服务器带来相应的压力,有些数据可以直接存储在客户端,传统的Web技术中会 ...
- HTML5 ——本地存储
目录 一.HTML4客户端存储 1.1.提交表单发送到服务器的信息 1.2.客户端本地存储概要 二.localStorage 2.1.添加 2.2.取值 2.3.修改 2.4.删除 2.5.跨页面与跨 ...
- HTML5学习总结——本地存储
一.HTML4客户端存储 B/S架构的应用大量的信息存储在服务器端,客户端通过请求响应的方式从服务器获得数据,这样集中存储也会给服务器带来相应的压力,有些数据可以直接存储在客户端,传统的Web技术中会 ...
- drag file upload xhr 拖拽异步上传文件
<div id="droptarget" style="width: 500px; height: 200px; background: silver"& ...
随机推荐
- Maven实战一
转载:http://www.iteye.com/topic/1123221 1. 用Maven 命令创建一个简单的Maven项目 在cmd中运行如下命令: Cmd代码 mvn archetype:ge ...
- 部署lvs-rrd监控LVS
1.安装rrdtool .tar.gz cd rrdtool- ./configure -prefix=/usr/local/rrdtool make make instal 安装完毕后将rrdtoo ...
- 迷宫 maze
1 #include <stdlib.h> #include <stdio.h> #define stackinitsize 50 #define stackincrement ...
- Hat's Fibonacci(大数问题)
#include <iostream>#include <stdio.h>#include <string.h>using namespace std;int a[ ...
- [Locked] Largest BST Subtree
Largest BST Subtree Given a binary tree, find the largest subtree which is a Binary Search Tree (BST ...
- poj 1161 最短路构图
题目链接:http://poj.org/problem?id=1161 #include <cstdio> #include <cmath> #include <algo ...
- Servlet的一些细节(2)
1. Servlet的创建时间 Servlet是不能单独运行,调用它的叫做Servlet引擎,或者叫做web服务器 针对客户端的多长Servlet请求,通常情况下,服务器只会创建一个Servlet实例 ...
- hibernate生成查询语句但查不到数据
hibernate能够生成查询语句 说明它已经进行了查询操作 返回结果数据记录为0 很可能出现的情况 是 :该查询未未访问到指定数据库表. 当使用的数据库为oracle数据库时,你会在bean配置 ...
- Geometric Shapes (poj3449多边形相交)
题意:给你一些多边形的点,判断每个多边形和那些多边形相交,编号按照字典序输出 思路:枚举每个多边形的每条边看是否相交,这里的相交是包括端点的,关键是给你正方形不相邻两个点求另外两个点怎么求,长方形给你 ...
- javascript 函数 方法
函数 1.函数的定义 (1)function 函数名(x){ 函数执行体; } (2)var 函数名=function(x){ 函数执行体; }; 这种方法说明,在javascript中,函数就是一种 ...