我再次與我無法理解的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)。 –