我仍然不能相信這是不可能的,但是有沒有辦法通過dom循環並查看使用'addEventListener'附加的所有事件處理程序。 This post和許多其他人說不。如何使用JavaScript在DOM節點上查找事件偵聽器
如果是這種情況,那麼像Chrome的檢查員或Firebug這樣的應用程序如何顯示它們,它們是幹什麼的?我想他們可能會以某種方式增加dom的方法,以便跟蹤綁定的內容。
我仍然不能相信這是不可能的,但是有沒有辦法通過dom循環並查看使用'addEventListener'附加的所有事件處理程序。 This post和許多其他人說不。如何使用JavaScript在DOM節點上查找事件偵聽器
如果是這種情況,那麼像Chrome的檢查員或Firebug這樣的應用程序如何顯示它們,它們是幹什麼的?我想他們可能會以某種方式增加dom的方法,以便跟蹤綁定的內容。
當然,瀏覽器內部有一個事件監聽器列表,但它不暴露給頁面級JavaScript。例如,Firebug(或Eventbug)可能使用nsIEventListenerInfo。
話雖這麼說,這個古老的答案仍持有:
How to find event listeners on a DOM node?
好的答案的人。非常感謝。 – screenm0nkey
鉻的控制檯有一個方法,可以幫助你檢查一個DOM節點註冊了任何事件偵聽器,例如檢查連接到事件監聽器文檔節點使用:
https://developers.google.com/chrome-developer-tools/docs/commandline-api#geteventlistenersobject
getEventListeners(document);
你可以遞歸遍歷所有DOM節點,找到連接所有事件處理程序 如果需要的話。
getEventListeners(myDomElement)在Chromium v.25開發人員工具控制檯中工作,但在實際代碼中會引發錯誤。 –
@Robinlikethebird是的,'getEventListeners'是一個chrome devtools控制檯提供的方法,我正在尋找一種可以在運行時查找綁定到dom的事件的方法。現在,我只是找到jquery方法'$ .data(element,'events')'。我正在尋找一種簡單的JavaScript或DOM方式。 – novaline
在Chrome V53控制檯I嘗試:
getEventListeners(文件);
返回:
__proto__:對象
和子元素,不是我要找的。
所以我已經試過:
getEventListeners(窗口);
返回
對象{beforeunload:數組[1],負載:數組[1]}
這就是我要找的。 所以我認爲,正確的做法是羅賓就像鳥的方式:
getEventListeners(myDomElement):
其中myDomElement是目標對象與喜歡的getElementById等標準的方式得到了..
使用以下函數獲取註冊事件的json;
getEventListeners(node_name);其中node_name可以是元素名稱或其ID。
你在哪裏看到Chrome或Firebug顯示事件監聽器? –
是的,我很想知道你在哪裏看到他們!我已經下載了顯示它們的Firebug插件,但你可能是正確的,他們在某種程度上跟蹤任何事件監聽器,當他們綁定 – Ian
在Chrome瀏覽器中,點擊頂部的「元素」選項卡。這是左邊最遠的一個。在dom中選擇一個元素,然後在右側有一個關於您選擇的元素(如樣式,屬性等)的信息列表。列表中的最後一個是事件監聽器,它會爲您提供所需的所有信息。但是,您只能看到所選元素的信息,而不是整個DOM。加我問這個問題:) – screenm0nkey