我只是用 DOM 和 Javascript 来玩弄事件监听器,并注意到了这一点:
function chained(msg) {
console.log(msg, event);
}
function onClick() {
chained('the body was clicked');
}
document.body.addEventListener('click', onClick);
现在有趣的是......这将输出:
"the body was clicked, (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
。
关于javascript - event 是一个全局变量,可以在回调链中的任何地方访问吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6426497/