1

看这个:

addEventListener("mouseover", function(e){..code..},false);

可以写成

function mouseover(e){ ... }
addEventListener('mouseover', mouseover, false);

所以这里 mouseover 函数接收事件对象,即使它只是被引用并且没有传递任何参数。我认为 addeventlistener 函数可能会执行所有引用/匿名的函数,如下所示:

....
suppose like this
function addeventlistner (a,b,c){
b(e);
}

我为什么要问这个?

我不明白 e 在 addeventlistner 函数中来自哪里function (e) {...code...}

据我了解 addeventlistner 的第二个参数可以是目标对象或函数。其中传递了一个事件对象。函数可以对传递给它的对象做一些事情是有道理的,对象会对这个传递的事件对象做什么。

原因是我试图在一些示例代码中理解函数从 addeventlistner 中获取 e,类似于上面的一个,并使用诸如 e.msg、e.data 和 e.cmd 之类的属性.....我不知道他们来自哪里。

它们是 Event 对象的属性吗?我找不到他们!

4

1 回答 1

1

当您添加事件侦听器时,您添加的函数会根据事件的类型(单击、滚动等)传递一个事件对象。

http://www.w3schools.com/jsref/dom_obj_event.asp

window.addEventListener("click", function(event) {
    alert(event.pageX + ", " + event.pageY);
}, false);
// same as
window.addEventListener("click", function(e) {
    alert(e.pageX + ", " + e.pageY);
}, false);

参数名称可以是它仍然代表事件对象的任何名称。

编辑列出事件对象的所有属性和功能

window.addEventListener("click", function(event) {
    var all = "";
    for(var prop in event) {
        all += prop + " : " + event[prop] + "\n";
    }
    alert(all);
}, false);
于 2013-06-17T18:09:38.047 回答