javascript事件处理机制——容易被我们遗忘的细节问题
我们在书写js程序的时候,在很大程度上,都是写客户端交互程序,所以大部分都可以事件有关.但是遗憾的是,这些事件处理程序的细节非常复杂.并且由于浏览器的不同,目前有四种不同的事件处理机制:
原始事件模型:这是最简单的一种事件处理模型,尽管功能有限,但所有的浏览器都支持它.可以把它看作0级DOM
标准事件模型:这是一种更强大更完整的事件模型.2级DOM标准对它进行了标准化.Netscape 6和Mozilla支持它
Internet Explorer事件模型:具有标准事件模型的许多特性。虽然Microsoft参与了2级DOM事件模型的创建。但IE7一下的版本都没实现2级模型的标准,坚持使用自己的专有的事件模型,IE8以上的不太清楚。这意味着,在ie下运行,要想使用高级事件处理特性的js程序必须编写特定的代码。
Netscape事件模型:这种模型现在已被标准模型取代.不过Netscape6为了向后兼容,还是继续实现了它.
接下来我们讨论这几种事件模型各自的特点以及如何实现一个通用健壮的事件处理程序在你的应用程序中
其实,我们在处理js事件问题的时候,我们就会很自然的去认为事件发生在目标元素上,那么它的事件处理代码就只会在你编写的特定处理函数上执行,例如:有这样一段代码:
?
var parent = function(e) {var event = new Event(e);alert('parent');};var child = function(e) {var event = new Event(e);alert('child');event.stopPropagation();};?经过这样处理以后,便可保证在任何情况任何环境下照常运行