掌握 Dojo 工具包,第 3 部分: Dojo 事件机制
2009-11-05 00:00:00 来源:WEB开发网 闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾惧綊鏌熼梻瀵割槮缁炬儳缍婇弻鐔兼⒒鐎靛壊妲紒鎯у⒔閹虫捇鈥旈崘顏佸亾閿濆簼绨绘い鎺嬪灪閵囧嫰骞囬姣挎捇鏌熸笟鍨妞ゎ偅绮撳畷鍗炍旈埀顒勭嵁婵犲嫮纾介柛灞捐壘閳ь剛鎳撻~婵嬪Ω閳轰胶鐤呯紓浣割儐椤戞瑩宕ョ€n喗鐓曟い鎰靛亝缁舵氨绱撻崘鈺傜婵﹤顭峰畷鎺戔枎閹搭厽袦婵犵數濮崑鎾绘⒑椤掆偓缁夌敻骞嗛悙鍝勭婵烇綆鍓欐俊鑲╃磼閹邦収娈滈柡灞糕偓鎰佸悑閹肩补鈧尙鏁栧┑鐐村灦閹稿摜绮旈悽绋课﹂柛鏇ㄥ灠閸愨偓濡炪倖鍔﹀鈧繛宀婁邯濮婅櫣绱掑Ο璇茶敿闂佺ǹ娴烽弫璇差嚕婵犳碍鏅插璺猴工瀹撳棝姊虹紒妯哄缂佷焦鎸冲畷鎴﹀箻鐠囧弶宓嶅銈嗘尰缁嬫垶绂嶉悙顒佸弿婵☆垳鍘ф禍楣冩倵濮樼偓瀚�

清单 5 的页面中有一个跟 c++ 相关的书的列表,列表的每一项都通过 dojo.connect 绑定了一个或多个事件处理函数。第一项“ c++ primer ”给 mouseover,mousedown,click 三个事件注册了事件处理函数,第二项“ Thinking in c++ ”注册了两个 click 事件处理函数 handler 和 handler2,第三项“ Inside C++ object model ”绑定了 click 事件。这个例子可以说包括了“简单连接”机制的方方面面。
首先来看看 dojo.connect 的使用,dojo.connect 能够把多个事件处理函数绑定在一个事件上,第二项“ Thinking in c++ ”的 click 事件就绑定了两个事件处理函数。在本例中,并没有给 dojo.connect 函数传递事件处理函数的 context,因为默认的是 dojo.global,而两个事件处理函数 hander 和 hander2 都是全局函数,所以不需要显示传递 dojo.global 。
再来看事件处理函数 handler 和 handler2 。 handler2 只是用来说明 dojo.connect 可以绑定多个事件处理函数,不多说; handler 是主要的事件处理函数,在 handler 里先输出了事件对象的三个属性,type、target、currentTarget,type 表示事件的类型,target 表示事件目标节点,currentTarget 表示当前事件传递到哪个节点了,输出他们三个是为了说明 Dojo 也是在冒泡阶段处理事件的(还记得在 DOM 事件模型部分对事件的三个阶段的描述吗?)。所以当点击第三项 b3 时,在浏览器的模拟控制台输出是
eventType=click; node=b3; currentTarget=b3
eventType=click; node=b3; currentTarget=cpp
eventType=click; node=b3; currentTarget=book
可以看出,首先会触发 b3 的事件处理函数,然后是 id 为 cpp 的 ol 元素的 click 事件处理函数,最后是 id 为 book 的 div 。所以毫无疑问 Dojo 是在事件的冒泡阶段处理事件的,capture 阶段并不做任何处理。 handler 的最后是关于阻止事件传播的代码,如果按住 shift 键,再点击第三项时,只会在模拟控制台输出:
- ››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...
更多精彩
赞助商链接