我想用閉包庫來構建一個小應用程序。我試圖使用事件代表團以下代碼:關閉庫生成的瀏覽器事件沒有目標
var dom_ = goog.dom.$('targetelementid');
goog.events.listen(dom_, goog.events.EventType.CLICK, function(e) {
console.log(e);
}, false);
的問題是,當事件調度和處理函數執行生成的對象(goog.events.BrowserEvent)的目標和currentTarget當前屬性設置空值。我不明白這是爲什麼。
如果我使用常規偵聽器添加(使用addEventListener
)傳遞給處理程序函數的事件已正確設置目標。
有關在事件對象中沒有指定目標時如何在關閉庫代碼中使用事件委託模式的任何說明?
情況並非如此,在這兩個代碼片段中,函數都在全局範圍內執行。問題在於,Chrome顯示對象的「活動副本」,並且一旦爲該事件類型註冊的所有偵聽器都執行完畢,closure就會處理Event對象,因此目標在調試控制檯中丟失,並被刪除。 Google過多優化?無論如何,在回調執行時,目標屬性是可用的。我只是無法在調試控制檯中看到它。我通過閱讀events.js文件最終得出結論。 – 2012-02-28 14:05:35