我再次与我无法理解的JavaScript。传递一个事件和一个变量在Firefox中的匿名函数
我有一个可拖动的图书馆,它有一个被称为像这样(的_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)
很好用!太好了!在... IE浏览器! SF!铬!不在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既可以。我建议你阅读[关于quirksmode.org上的事件处理的优秀文章](http://quirksmode.org/js/introevents.html)。 –