JavaScript高级程序设计 阅读笔记(十八) js跨平台的事件
跨平台的事件EventUtil对象 EventUtil: 代码如下: var EventUtil={ addEventHandler:function(oTarget, sEventType, fnHandler){ if(oTarget.addEventListener){ oTarget.addEventListener(sEventType,fnHandler,false); } else if(oTarget.attachEvent){ oTarget.attachEvent(“on”+sEventType,fnHandler); } else{ oTarget[“on”+sEv 在JavaScript编程中,跨平台的事件处理是至关重要的,因为它确保了代码能在不同的浏览器环境中运行。本篇笔记主要关注的是JavaScript中的EventUtil对象,这是一个实用工具类,用于处理跨浏览器的事件绑定、解绑和标准化事件对象。接下来,我们将详细讨论这个对象的各个功能。 `EventUtil.addEventHandler`函数是用来添加事件处理程序的。它接受三个参数:目标对象`oTarget`、事件类型`sEventType`和处理函数`fnHandler`。这个函数首先检查目标对象是否支持`addEventListener`方法,这是W3C标准中的事件处理方式。如果支持,就直接使用`addEventListener`来添加事件监听器;如果不支持,它会检查`attachEvent`,这是Internet Explorer浏览器早期版本所用的方法,然后调用`attachEvent`;如果连`attachEvent`都不支持,就直接将事件处理函数赋值给目标对象的`on`+`sEventType`属性。 `EventUtil.removeEventHandler`函数与`addEventHandler`类似,但它的目的是移除事件处理程序。同样,它会根据浏览器的兼容性选择使用`removeEventListener`或`detachEvent`来移除事件监听器,如果都不支持,则将事件处理函数置为`null`,从而解除事件绑定。 `EventUtil.formatEvent`函数用于标准化事件对象。由于不同浏览器对事件对象的处理方式存在差异,此函数会根据当前环境对事件对象进行修正。例如,对于IE浏览器和Windows系统,它会为事件对象添加或修改一些属性,如`charCode`、`eventPhase`、`isChar`、`pageX`、`pageY`、`preventDefault`、`relatedTarget`、`stopPropagation`、`target`和`time`,使其尽可能地符合W3C标准。 `EventUtil.getEvent`函数则用于获取当前事件对象。在IE中,事件对象是通过`window.event`全局变量提供的,而在其他遵循W3C标准的浏览器中,事件对象通常作为事件处理函数的参数传递。`getEvent`函数会根据当前环境判断并返回正确的事件对象,经过`formatEvent`处理后,确保事件对象在所有浏览器中的行为一致。 在给出的测试代码中,可以看到`EventUtil`对象被实际应用。这段代码创建了一个简单的HTML文档,并在其中使用`EventUtil`来添加和移除事件监听器,展示出其跨浏览器兼容性。 总结来说,`EventUtil`对象是JavaScript中用于解决跨平台事件处理问题的一个实用工具,它通过检测浏览器的特性并根据需要使用相应的API,确保事件处理程序能在各种浏览器上正常工作。通过理解并运用这种策略,开发者可以编写出更加健壮和兼容的JavaScript代码。
- 粉丝: 2
- 资源: 900
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助