【发布时间】:2011-07-14 23:05:12
【问题描述】:
由于无法理解 javascript,我又来了。
我有一个可拖动的库,它有一个这样调用的命令(_ag 只是命名空间的东西):
_ag.drag(event,targetDiv);
// targetDiv can be a string, btw - converted to an element in the function
所以我的代码看起来像这样(用闭包传递一些数据 - 对我来说是一个新技巧):
header.onmousedown=function(targetDiv){
return function(){
_ag.drag(event,targetDiv)
}
}(aTargetDiv)
效果很好!太棒了!在...即!顺丰!铬合金!不在 Firefox 中!
不,firefox 找不到该事件。现在通常使用这样的东西就很容易了(形式略有不同 - 希望它仍然有效):
header.onmousedown=function(event){
alert(event.screenX)
}
但是,如果我决定传入一些参数,它会吹走事件,我猜这是 FF 中的某种不可见参数?
//broken thing 1:
header.onmousedown=function(event){
alert(event.screenX) // somethingToPass in covers event in FF
}(somethingToPassIn)
// broken thing 2:
header.onmousedown=function(event){
alert(event.screenX)
}(event,somethingToPassIn) // event is undefined
SO FIREFOX:我如何向您发送事件?希望这是一个非常愚蠢的问题,并且有这么多的人有答案!提前谢谢,我会在这里撞墙。
【问题讨论】:
-
找不到
event,因为您没有将其指定为参数。在 W3C 兼容的浏览器中,event对象是传递给事件处理程序的第一个参数。 IE 只通过window.event提供了另一种方式。 Chrome 两者兼而有之。我建议你阅读excellent articles about event handling at quirksmode.org。
标签: javascript events firefox closures