掌握 Dojo 工具包,第 3 部分: Dojo 事件机制
2009-11-05 00:00:00 来源:WEB开发网
清单 3
<html>
<body>
<input id="btn" type="button" value="hello" />
<script>
document.getElementById("btn").onclick=sayHello;
function sayHello() { alert('Hello'); }
</script>
</body>
</html>
在清单 3 的例子中,首先通过 document.getElementById 获取需要绑定事件的控件,再把控件的 onclick 事件设置为事件处理函数,其效果与前面的例子是一样的。需要注意的是,script 脚本放到了控件后面,因为使用了 document.getElementById 去获控件,而 javascript 是解释执行的,必须保证控件在执行到 getElementById 之前已经创建了,否则会出现找不到控件的错误。但 sayHello 为什么会在事件绑定语句的后面呢?按照刚才的原则,不是必须确保 sayHello 已经预先定义好了吗?其实不然,事件处理函数的代码直到事件发生时才被调用,此时才会检查变量是否已经定义,函数是否存在,而页面初次加载时按钮上的 click 事件是不会发生的。页面加载后用户再点击按钮,sayHello 函数已经完全加载到页面中,函数是存在的。当然如果是普通的函数调用,一定要保证被调用函数出现在调用函数之前。采用清单 3 所示的这种方式时,在 web 应用比较复杂时,可以把事件处理函数集中放在一起,比如单独存放在一个文件中,方便以后查找,修改。这个例子也很好的说明了 javascript 是一种解释执行的脚本语言。
前面三种事件处理方式是在 W3C DOM Level0 中定义的,是不是简单易用?但是似乎太简单了,缺少一些东西。首先一个事件只能绑定一个处理函数,不支持多个事件处理函数的绑定。如果开发人员被迫把事件处理代码都放在一个函数中,代码的模块性会很差。其次解除事件处理函数的绑定的方式很不友好,只能把它设为空值或者空串。
- ››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...
更多精彩
赞助商链接