Add addEventListeners to the JS execution tree
This commit is contained in:
@@ -37,6 +37,7 @@ var PhantomasWrapper = function() {
|
||||
'domComplexity',
|
||||
'domMutations',
|
||||
'domQueries',
|
||||
'eventListeners',
|
||||
'filmStrip',
|
||||
'jQuery',
|
||||
'jserrors',
|
||||
|
||||
@@ -0,0 +1,44 @@
|
||||
/**
|
||||
* Analyzes events bound to DOM elements
|
||||
*/
|
||||
/* global Document: true, Element: true, window: true */
|
||||
'use strict';
|
||||
|
||||
exports.version = '0.2.a';
|
||||
|
||||
exports.module = function(phantomas) {
|
||||
phantomas.setMetric('eventsBound'); // @desc number of EventTarget.addEventListener calls
|
||||
|
||||
// spy calls to EventTarget.addEventListener
|
||||
// @see https://developer.mozilla.org/en-US/docs/Web/API/EventTarget.addEventListener
|
||||
phantomas.once('init', function() {
|
||||
phantomas.evaluate(function() {
|
||||
(function(phantomas) {
|
||||
function eventSpyBefore(eventType) {
|
||||
/* jshint validthis: true */
|
||||
var path = phantomas.getDOMPath(this);
|
||||
//phantomas.log('DOM event: "' + eventType + '" bound to "' + path + '"');
|
||||
|
||||
phantomas.incrMetric('eventsBound');
|
||||
phantomas.addOffender('eventsBound', '"%s" bound to "%s"', eventType, path);
|
||||
|
||||
phantomas.enterContext({
|
||||
type: 'addEventListener',
|
||||
callDetails: {
|
||||
context: {
|
||||
domElement: path
|
||||
},
|
||||
arguments: [eventType]
|
||||
},
|
||||
caller: phantomas.getCaller(1),
|
||||
backtrace: phantomas.getBacktrace()
|
||||
});
|
||||
}
|
||||
|
||||
phantomas.spy(Element.prototype, 'addEventListener', eventSpyBefore, phantomas.leaveContext);
|
||||
phantomas.spy(Document.prototype, 'addEventListener', eventSpyBefore, phantomas.leaveContext);
|
||||
phantomas.spy(window, 'addEventListener', eventSpyBefore, phantomas.leaveContext);
|
||||
})(window.__phantomas);
|
||||
});
|
||||
});
|
||||
};
|
||||
Reference in New Issue
Block a user