javascript中的e是什么意思?

JavaScript016

javascript中的e是什么意思?,第1张

上面这段代码,在 JavaScript 的事件处理中比较常见,主要是为了兼容老版本的 Internet Explorer(主要是 IE9 之前的版本)而设立的,原因是老版 IE 不支持标准的 W3C 事件处理规范。

这段代码中的 e 代表事件(event)对象,即所谓的事件驱动源。下面以鼠标点击事件为例,作一个测试:

(HTML)

<!DOCTYPE html>

<html>

<body>

<button type="button" id="btn">Click</button>

<script type="text/javascript">

// JavaScript 代码

</script> 

</body>

</html>

(JavaScript)

document.getElementById("btn").onclick=function(e){

alert(e)

}

编写一个匿名函数 function(e){ alert(e)},并将其赋值给事件句柄(即 onclick),这是一个回调函数,相当于 onclick(e){ alert(e)}。这段代码在 Chrome、Firefox 或新版 IE(IE9 及以后的版本)等支持标准的浏览器下运行,弹出的应该是类似“[object MouseEvent]”的字符串,说明 e 为事件对象;而在老版 IE 下运行,结果就是“undefined”(未定义)。

显而易见,在标准的流程中, 事件对象默认由事件句柄函数的第一个参数传入,供处理函数使用;在老版 IE 中,这个事件对象却无法直接由句柄函数传入,反而可以使用一个全局变量来代表事件对象,这个变量即 window.event。同样,可以用例子验证:

document.getElementById("btn").onclick=function(e){

alert(window.event)

}

在老版 IE 中即可显示 window.event 为对象,说明可以通过这种方式取得事件对象。(其实除了 IE 外,Chrome 等浏览器中也存在 window.event,但是在支持标准的浏览器中,我们最好使用标准方式。)

现在,就可以理解为什么会出现  e=e||window.event 这种写法了。因为只有这样才能兼容老版 IE 的事件处理过程:如果浏览器支持标准的处理过程则使用句柄函数传入的第一个参数(e),反之则使用 IE 的处理方法(window.event)。从某种意义上说,标准的事件对象(e) 和老版 IE 中的 window.event 可以视为等价的(事实上有一些区别,这里就不详细区分了),两者任何一个有效都可以供我们使用。

document.getElementById("btn").onclick=function(e){

e=e||window.event

// 使用 e 对象

}

于是,上面的这段代码就可以兼容几乎所有的浏览器了。

e是事件对象,就是js事件相关信息对象,而且根据不同的事件,属性值会不一样。比如 obj.onclick=function(e){

console.log(e)

}

这里的e就是obj点击事件的事件对象