我只是在玩DOM和javascript的事件监听器并注意到这一点:
function chained(msg) {
console.log(msg, event);
}
function onClick() {
chained('the body was clicked');
}
document.body.addEventListener('click', onClick);
现在有趣的事情......这将输出:
“点击了身体,(MouseEvent)”
然后我问,为什么?如何通过事件对象而不在chained
调用上发送它?
function chained(msg) {
console.log(msg, namedEventObj); //throw error namedEventObj is not defined
}
function onClick(namedEventObj) {
console.log(event); //outputs (MouseEvent);
console.log(nameEventObj); //outputs (MouseEvent);
chained('the body was clicked');
}
document.body.addEventListener('click', onClick);
即使我声明事件obj要作为onClick
传递给namedEventObj
函数,它只能用于onClick
但不能用于chained
函数...我得到了这个,这对我来说很有意义......但绝对不是event
函数可用的chained
变量。
任何人都知道为什么会这样?
我唯一能想到的事实是事件实际上是window.event
并且当某个事件调度和事件时它使自己可用...但是这意味着任何元素都可以在调用时获取该事件信息触发事件的同时?
我使用的是Chrome 11.0.x
答案 0 :(得分:26)
可以通过window.event
访问当前事件。仅使用event
隐式访问window.event
。