Skip to content

Instantly share code, notes, and snippets.

@thepeoplesbourgeois
Forked from tkafka/listAllEventListeners.js
Last active January 19, 2026 18:41
Show Gist options
  • Select an option

  • Save thepeoplesbourgeois/66c2eeecc5b264efd41471ca5e354b1a to your computer and use it in GitHub Desktop.

Select an option

Save thepeoplesbourgeois/66c2eeecc5b264efd41471ca5e354b1a to your computer and use it in GitHub Desktop.

Revisions

  1. thepeoplesbourgeois revised this gist Nov 5, 2019. 2 changed files with 15 additions and 26 deletions.
    15 changes: 15 additions & 0 deletions allEventListeners.js
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,15 @@
    function allEventListeners(){
    const eventNames = Object.keys(window).filter(key => /^on/.test(key))
    return [...document.querySelectorAll('*'), document].flatMap((node) => eventNames
    .filter(event => node[event])
    .map(event => {
    return {
    node,
    event,
    listener: (typeof node[event] === 'function') ? node[event].toString() : node[event]
    }
    })
    )
    }

    console.table(allEventListeners())
    26 changes: 0 additions & 26 deletions listAllEventListeners.js
    Original file line number Diff line number Diff line change
    @@ -1,26 +0,0 @@
    console.table((function listAllEventListeners() {
    const allElements = Array.prototype.slice.call(document.querySelectorAll('*'));
    allElements.push(document); // we also want document events
    const types = [];
    for (let ev in window) {
    if (/^on/.test(ev)) types[types.length] = ev;
    }

    let elements = [];
    for (let i = 0; i < allElements.length; i++) {
    const currentElement = allElements[i];
    for (let j = 0; j < types.length; j++) {
    if (typeof currentElement[types[j]] === 'function') {
    elements.push({
    "node": currentElement,
    "type": types[j],
    "func": currentElement[types[j]].toString(),
    });
    }
    }
    }

    return elements.sort(function(a,b) {
    return a.type.localeCompare(b.type);
    });
    })());
  2. @tkafka tkafka revised this gist Mar 6, 2019. 1 changed file with 4 additions and 3 deletions.
    7 changes: 4 additions & 3 deletions listAllEventListeners.js
    Original file line number Diff line number Diff line change
    @@ -1,11 +1,12 @@
    console.table((function listAllEventListeners() {
    let elements = [];
    const allElements = document.querySelectorAll('*');
    const allElements = Array.prototype.slice.call(document.querySelectorAll('*'));
    allElements.push(document); // we also want document events
    const types = [];
    for (let ev in window) {
    if (/^on/.test(ev)) types[types.length] = ev;
    }

    let elements = [];
    for (let i = 0; i < allElements.length; i++) {
    const currentElement = allElements[i];
    for (let j = 0; j < types.length; j++) {
    @@ -22,4 +23,4 @@ console.table((function listAllEventListeners() {
    return elements.sort(function(a,b) {
    return a.type.localeCompare(b.type);
    });
    })());
    })());
  3. @tkafka tkafka revised this gist Mar 6, 2019. 1 changed file with 2 additions and 4 deletions.
    6 changes: 2 additions & 4 deletions listAllEventListeners.js
    Original file line number Diff line number Diff line change
    @@ -1,4 +1,4 @@
    const listeners = (function listAllEventListeners() {
    console.table((function listAllEventListeners() {
    let elements = [];
    const allElements = document.querySelectorAll('*');
    const types = [];
    @@ -22,6 +22,4 @@ const listeners = (function listAllEventListeners() {
    return elements.sort(function(a,b) {
    return a.type.localeCompare(b.type);
    });
    })();

    console.table(listeners);
    })());
  4. @tkafka tkafka revised this gist Mar 6, 2019. 1 changed file with 5 additions and 5 deletions.
    10 changes: 5 additions & 5 deletions listAllEventListeners.js
    Original file line number Diff line number Diff line change
    @@ -12,16 +12,16 @@ const listeners = (function listAllEventListeners() {
    if (typeof currentElement[types[j]] === 'function') {
    elements.push({
    "node": currentElement,
    "listeners": [ {
    "type": types[j],
    "func": currentElement[types[j]].toString(),
    }]
    "type": types[j],
    "func": currentElement[types[j]].toString(),
    });
    }
    }
    }

    return elements.filter(element => element.listeners.length)
    return elements.sort(function(a,b) {
    return a.type.localeCompare(b.type);
    });
    })();

    console.table(listeners);
  5. @dmnsgn dmnsgn created this gist Apr 5, 2017.
    27 changes: 27 additions & 0 deletions listAllEventListeners.js
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,27 @@
    const listeners = (function listAllEventListeners() {
    let elements = [];
    const allElements = document.querySelectorAll('*');
    const types = [];
    for (let ev in window) {
    if (/^on/.test(ev)) types[types.length] = ev;
    }

    for (let i = 0; i < allElements.length; i++) {
    const currentElement = allElements[i];
    for (let j = 0; j < types.length; j++) {
    if (typeof currentElement[types[j]] === 'function') {
    elements.push({
    "node": currentElement,
    "listeners": [ {
    "type": types[j],
    "func": currentElement[types[j]].toString(),
    }]
    });
    }
    }
    }

    return elements.filter(element => element.listeners.length)
    })();

    console.table(listeners);