博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
js 添加事件 attachEvent 和 addEventListener 的用法
阅读量:4346 次
发布时间:2019-06-07

本文共 1460 字,大约阅读时间需要 4 分钟。

 
function
addEvent(element, type, handler) {
//为每一个事件处理函数分派一个唯一的ID
if
(!handler.$$guid) handler.$$guid = addEvent.guid++;
//为元素的事件类型创建一个哈希表
if
(!element.events) element.events = {};
//为每一个"元素/事件"对创建一个事件处理程序的哈希表
var
handlers = element.events[type];
if
(!handlers) {
handlers = element.events[type] = {};
//存储存在的事件处理函数(如果有)
if
(element[
"on"
+ type]) {
handlers[0] = element[
"on"
+ type];
}
}
//将事件处理函数存入哈希表
handlers[handler.$$guid] = handler;
//指派一个全局的事件处理函数来做所有的工作
element[
"on"
+ type] = handleEvent;
};
//用来创建唯一的ID的计数器
addEvent.guid = 1;
function
removeEvent(element, type, handler) {
//从哈希表中删除事件处理函数
if
(element.events && element.events[type]) {
delete
element.events[type][handler.$$guid];
}
};
function
handleEvent(event) {
var
returnValue =
true
;
//抓获事件对象(IE使用全局事件对象)
event = event || fixEvent(window.event);
//取得事件处理函数的哈希表的引用
var
handlers =
this
.events[event.type];
//执行每一个处理函数
for
(
var
i
in
handlers) {
this
.$$handleEvent = handlers[i];
if
(
this
.$$handleEvent(event) ===
false
) {
returnValue =
false
;
}
}
return
returnValue;
};
//为IE的事件对象添加一些“缺失的”函数
function
fixEvent(event) {
//添加标准的W3C方法
event.preventDefault = fixEvent.preventDefault;
event.stopPropagation = fixEvent.stopPropagation;
return
event;
};
fixEvent.preventDefault =
function
() {
this
.returnValue =
false
;
};
fixEvent.stopPropagation =
function
() {
this
.cancelBubble =
true
;
};
 
本文转载:http://www.oschina.net/question/54100_25614

转载于:https://www.cnblogs.com/tsyr/p/4900595.html

你可能感兴趣的文章
NIO:与 Buffer 一起使用 Channel
查看>>
Android帧缓冲区(Frame Buffer)硬件抽象层(HAL)模块Gralloc的实现原理分析
查看>>
MFC接收ShellExecute多个参数
查看>>
volatile和synchronized的区别
查看>>
类中的静态函数和非静态函数的区别
查看>>
windows 下安装Apache
查看>>
Fedora14 mount出现错误时解决办法【亲测有效】
查看>>
ruby实现生产者和消费者
查看>>
node.js 之 http 架设
查看>>
MongoDB 备份与还原
查看>>
Oracle启动与关闭数据库实例
查看>>
Spring day01
查看>>
hihocoder-1740-替换函数
查看>>
Codeforce Round #219 Div2
查看>>
option value的值可以有空格 再试试吧
查看>>
.htaccess to httpd.conf
查看>>
node.js 基础学习笔记2
查看>>
hadoop中常见元素的解释
查看>>
BZOJ-1497 最大获利
查看>>
4-4 修改文件
查看>>