动态HTML教程
- 第五天 |
Taylor
1998.3.9 |
第五页:关于Event对象
在你完全掌握dHTML前,你需要了解event对象。两种4.0浏
览器都包含event对象。它在事件创立时产生,如点击一个可
点击的对象,移动鼠标,或聚焦到一个窗体元素上。Event对
象被创建然后传递给处理事件的函数。
下面是event对象属性的描述,以及Netscape和IE处理它们的
方式:
4.0浏览器增加了一些新事件:
onDblClick |
鼠标双击 |
onKeyDown |
键被按下 |
onKeyPress |
键被按下然后被释放 |
onKeyUp |
键被释放 |
onMouseDown |
鼠标被按下 |
onMouseMove |
鼠标移动 |
onMouseUp |
鼠标被释放 |
onResize |
窗口被调整大小 |
4.0浏览器也增加了处理事件的新方法,虽然它们(Netscape
和IE)的方式不同。Netscape用的是“时间捕捉”,IE用的
是“事件气泡”。
事件处理对Netscape处理如mouseMove或keyPress等事件是必
须的,它并不隐含指向一个标记或元素。你应该告诉客户注
意这些事件,并告诉它用什么函数来处理它们。下面例子
用window对象的captureEvents方法来描述正在捕捉的事件:
window.captureEvents(Event.MOUSEMOVE);
注意到在不用on作为名称一部分的情况下特定事件是如何被
指向的。你只是告诉Netscape注意所有发生在窗口中的事件
并捕捉它们。然后你需要告诉Netscape用这些被捕捉的时间
做些什么。注意on又出现了。
window.onMouseMove = handlerFunction;
function handerFunction(yourEvent) {
alert(yourEvent.screenX);
}
这段代码是一个演示事件过程的烦人的例子。每次你移动
鼠标,一个对话框会跳出来告诉你它的横坐标位置。以这种
方式处理的事件传递一个指针到event对象。从这儿你可以获
取必要的信息。一旦你厌倦了捕捉事件,你可以象这样释放
它们:
window.releaseEvents(Event.MOUSEMOVE);
于是这种类型的事件不再被捕捉。
IE用不同的方法处理事件,叫做“事件气泡”。在这种方
法中,如果你有这样一个结构:
<body onclick="bloorf()">
<p onclick="baz()">
<em onclick="bar()">
<strong onclick="foo()">Click on me</strong>
</em>
</p>
</body>
如果你点击strong标记内的文本,它接收到一个onClick事
件,然后发送onclick事件给<em>标记,处理它然后发送到
<p>标记,等等,然后直到窗口。这样每个元素以自己的方
式处理点击。但是如果你想停止气泡上传,可以取消气泡。
<script>
function foo() {
doSomeThing();
this.event.cancelBubble = true;
}
</script>
所以如果你不想让某个事件传递到所有它包含的标记,可以
象上面那样阻止它。
你可以看到,因为两种浏览器存在相似的事件,每一步都需
要大量的条件化工作,而且没有简单的方式把它们映射到一
个句法中。>>
动态HTML教程
第一页 排错
第二页 放在底部和右面
第三页 Netscape的调整大小问题
第四页 一定要把样式加在标记中吗?
第五页 关于Event对象
第六页 课程结束
[第1天][第2天][第3天][第4天][第5天]
本文本站根据《网猴》相关文章改编,版权归《网猴》所有
|