掌握 Dojo 工具包,第 3 部分: Dojo 事件机制
2009-11-05 00:00:00 来源:WEB开发网最后是事件目标,在 W3C DOM Level2 的事件模型里,事件目标不仅仅是 DOM 树种最底层的接收事件的节点,它可以是从这个底节点到跟节点路径上的任何一个节点。
Dojo 目前支持的事件类别包括 UIEvent,HTMLEvent, MouseEvent,每类事件具有的属性并不一样,比如只能在 MouseEvent 里才能获得事件发生时鼠标的位置等。
使用 Dojo 处理用户自定义事件
既然 W3C 已经定义了标准的 DOM Level2 事件模型,为什么 Dojo 还要提供 connect 函数来注册事件处理函数呢,为何不使用 DOM Level2 的 addEventListener 函数?从前面的叙述中也看不出 connect 与 addEventListener 有明显的不同之处。确实在处理 DOM 事件上,Dojo 的 connect 与 addEventListener 无甚大的不同,但是 Dojo 的 connect 函数还可以处理用户自定义事件。这是 addEventListener 所不具备的。下面来看看怎么使用 dojo.connect 来处理用户自定义事件。
用户自定义事件是指用户指定的函数被调用时触发的“事件”,当指定函数被调用时,将促发监听函数被调用。有点类似于 AOP 的编程思想,但在 Javascript 中实现 AOP 比起面向对象的编程语言要简单得多。
清单 6
<html>
<head>
<script type="text/javascript"
djConfig="parseOnLoad: true, isDebug: true"
src="../dojo/dojo/dojo.js"></script>
</head>
<body>
<script type="text/javascript">
function print(fName, args) {
var message = "In " + fName + "; the arguments are: "
dojo.forEach(args, function(args) {
message += args.toString() + " ";
}) ;
console.log(message);
}
function handler1() { print("handler1", arguments); }
function handler2(a1, a2) { print("handler2", [a1, a2]); }
function userFunction() {
print("userFunction", arguments);
}
dojo.connect("userFunction", null, "handler1");
dojo.connect("userFunction", null, "handler2");
userFunction(1, 2);
</script>
</body>
</html>
- ››Dojo QuickStart 快速入门教程 (4) 简单的测试框架...
- ››Dojo QuickStart 快速入门教程 (5) 使用数组
- ››Dojo QuickStart Guide 快速入门 Why Dojo
- ››Dojo Quick Start Guide 快速入门 (2) 基本框架
- ››Dojo QuickStart 快速入门教程 (3) 选择器
- ››Dojo Javascript 编程规范 [1]
- ››Dojo Javascript 编程规范 [2]
- ››Dojo Javascript 编程规范 [3]
- ››Dojo Javascript 编程规范 [4]
- ››Dojo Javascript 编程规范 [5]
- ››Dojo学习笔记(7. dojo.dom)
- ››Dojo学习笔记(8. dojo.event & dojo.event.to...
更多精彩
赞助商链接