Skip to content

Instantly share code, notes, and snippets.

@tlrobinson
Created October 22, 2008 08:21
Show Gist options
  • Save tlrobinson/18577 to your computer and use it in GitHub Desktop.
Save tlrobinson/18577 to your computer and use it in GitHub Desktop.
function callbackWrap(object, property, callbackArgNum, wrapperMaker, extra) {
var original = object[property];
object[property] = function() {
arguments[callbackArgNum] = wrapperMaker(arguments[callbackArgNum], extra);
return original.apply(this, arguments);
}
}
function reportExceptionsWrapperMaker(wrappedFunction, label) {
return function() {
var result;
//console.log("START" + (label ? " ("+label+")" : ""));
if (wrappedFunction && wrappedFunction.apply)
result = wrappedFunction.apply(this, arguments);
//console.log("END" + (label ? " ("+label+")" : ""));
return result;
}
}
callbackWrap(window, "setTimeout", 0, reportExceptionsWrapperMaker, "window.setTimeout");
callbackWrap(window, "setInterval", 0, reportExceptionsWrapperMaker, "window.setInterval");
callbackWrap(window, "addEventListener", 1, reportExceptionsWrapperMaker, "window.addEventListener");
callbackWrap(Element.prototype, "addEventListener", 1, reportExceptionsWrapperMaker, "Element.addEventListener");
callbackWrap(Document.prototype, "addEventListener", 1, reportExceptionsWrapperMaker, "Document.addEventListener");
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment