123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- /**
- * Analyzes events bound to DOM elements
- */
- /* global Document: true, Element: true, window: true */
- exports.version = '0.2.a';
- exports.module = function(phantomas) {
- 'use strict';
-
- 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]
- },
- backtrace: phantomas.getBacktrace()
- });
- }
- function eventSpyAfter(result) {
- phantomas.leaveContext();
- }
- phantomas.spy(Element.prototype, 'addEventListener', eventSpyBefore, eventSpyAfter);
- phantomas.spy(Document.prototype, 'addEventListener', eventSpyBefore, eventSpyAfter);
- phantomas.spy(window, 'addEventListener', eventSpyBefore, eventSpyAfter);
- })(window.__phantomas);
- });
- });
- };
|