我只是在使用 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);
即使我将要在
onClick
函数上传递的事件 obj 声明为 namedEventObj
,它也仅适用于 onClick
而不适用于 chained
函数...我得到了这个,这对我来说是有意义的.. .但绝对不是可用于 event
函数的 chained
变量。
有人知道为什么会这样吗?
我唯一能想到的是,事件实际上是
window.event
,并且当某些事件调度和事件时它使自己可用......但这意味着如果同时调用,任何元素都可以获取该事件信息事件何时触发?
我使用的是 Chrome 11.0.x
可以通过
window.event
访问当前事件。仅使用 event
就隐式访问 window.event
。