看看这个:
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);
}
为什么我要问这个?
我无法理解addeventlistner函数function (e) {...code...}
中的来源
据我所知,addeventlistner的第二个参数可以是目标对象或函数。哪个传递了一个事件对象。有意义的是,函数可以对传递给它的对象做一些事情,对象对这个传递的事件对象做了什么。
这样做的原因是我试图在一些示例代码中理解函数从addeventlistner获取e,类似于上面的代码,并使用了e.msg,e.data和e.cmd等属性....我不知道他们来自哪里。
它们是Event对象的属性吗?我找不到他们了!
答案 0 :(得分: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);