2015-02-06 178 views
5

是否有一個chrome開發工具(或任何擴展)的功能,通過它我可以查看某個頁面/應用程序上使用的所有事件監聽器。Chrome開發工具:查看頁面中使用的所有事件監聽器

編輯:
它肯定不是這個問題的重複:How do I view events fired on an element in Chrome DevTools?

上述問題的解釋瞭如何尋找當我們與我們的應用程序進行交互是被炒魷魚特定事件(我知道如何做到這一點!)。

我找什麼是所有我們正在收聽的應用程序和DOM它們連接到元素的事件名單。

+0

你不能使用源代碼面板:https://developer.chrome.com/devtools/docs/javascript-debugging? – arnolds 2015-02-06 13:28:40

+0

[VisualEvent](https://github.com/DataTables/VisualEvent) - _Visual Event是一個Javascript小書籤,提供有關已附加到DOM元素的事件的調試信息。 Visual Event顯示:哪些元素具有附加的事件,附加到元素的事件類型,將觸發事件的代碼,附加函數定義位置的源文件和行號(Webkit瀏覽器和歌劇)_ – Andreas 2015-02-06 13:43:58

+0

感謝您的建議和意見。我已經嘗試過了。看起來它只抓取DOM級別0和1類型的事件,而不是事件偵聽器。 – 2015-02-06 13:47:52

回答

0

Chrome Devtool無法爲您做到這一點。但隨着API鉻讓你可以檢查那些在您的控制檯:getEventListeners

只是把這個代碼在你的開發工具的控制檯,你可以在你的頁面中的所有綁定點擊事件數:

Array.from(document.querySelectorAll('*')) 
    .reduce(function(pre, dom){ 
    var clks = getEventListeners(dom).click; 
    pre += clks ? clks.length || 0 : 0; 
    return pre 
    }, 0) 

結果是這樣的:

3249 

那是一個很大的點擊綁定。絕對不是績效項目的好例子。

如果你想看到什麼事件都在你的頁面中所有的元素和多少每個事件的監聽器的綁定,只要把這些代碼在你的開發工具的控制檯:

Array.from(document.querySelectorAll('*')) 
    .reduce(function(pre, dom){ 
    var evtObj = getEventListeners(dom) 
    Object.keys(evtObj).forEach(function (evt) { 
     if (typeof pre[evt] === 'undefined') { 
     pre[evt] = 0 
     } 
     pre[evt] += evtObj[evt].length 
    }) 
    return pre 
    }, {}) 

結果是這樣的:

{ 
    touchstart: 6, 
    error: 2, 
    click: 3249, 
    longpress: 2997, 
    tap: 2997, 
    touchmove: 4, 
    touchend: 4, 
    touchcancel: 4, 
    load: 1 
} 

還有很多其他信息,你可以從這個API獲得。只是即興而已。

相關問題