3 回答

TA貢獻1963條經(jīng)驗 獲得超6個贊
使用傳統(tǒng)element.onclick= handler或HTML 附加的事件處理程序<element onclick="handler">可以element.onclick從腳本或調(diào)試器中的屬性中輕松檢索。
使用DOM Level 2事件addEventListener方法和IE 附加的事件處理程序attachEvent目前根本無法從腳本中檢索。DOM Level 3曾經(jīng)提出element.eventListenerList要獲得所有偵聽器,但是目前尚不清楚這是否會符合最終規(guī)范。今天,任何瀏覽器都沒有實現(xiàn)。
作為瀏覽器擴展的調(diào)試工具可以訪問這些類型的偵聽器,但是我不知道實際上有任何偵聽器。
一些JS框架留下了足夠的事件綁定記錄,以計算出它們所做的工作。Visual Event采用這種方法來發(fā)現(xiàn)通過一些流行框架注冊的偵聽器。

TA貢獻1848條經(jīng)驗 獲得超6個贊
自2011年中發(fā)布Chrome以來,自2010年以來發(fā)布了Chrome開發(fā)者渠道,Google Chrome開發(fā)者工具中的Elements Panel便具有此功能。
同樣,為選定節(jié)點顯示的事件偵聽器按其在捕獲和冒泡階段中觸發(fā)的順序排列。
命中command+ option+ i在Mac OSX和Ctrl+ Shift+ i在Windows上的Chrome火這件事

TA貢獻1898條經(jīng)驗 獲得超8個贊
Chrome開發(fā)工具最近發(fā)布了一些用于監(jiān)視JavaScript事件的新工具。
TL; DR
使用收聽特定類型的事件monitorEvents()。
使用unmonitorEvents()停止監(jiān)聽。
使用來獲取DOM元素的偵聽器getEventListeners()。
使用“事件偵聽器”檢查器面板獲取有關(guān)事件偵聽器的信息。
查找自定義事件
對于我的需要,在第3方代碼中發(fā)現(xiàn)自定義JS事件,以下的兩個版本getEventListeners()非常有用。
getEventListeners(window)
getEventListeners(document)
如果您知道將事件偵聽器附加到哪個DOM節(jié)點,則將其傳遞給而不是windowor document。
已知事件
如果您知道要監(jiān)視的事件(例如click在文檔正文上),則可以使用以下命令:monitorEvents(document.body, 'click');。
現(xiàn)在,您應(yīng)該開始document.body在控制臺中看到正在記錄的所有單擊事件。
添加回答
舉報