34 lines
1 KiB
JavaScript
34 lines
1 KiB
JavaScript
/**
|
|
* native plugin
|
|
*
|
|
* Extends support for global error handling for asynchronous browser
|
|
* functions. Adopted from Closure Library's errorhandler.js.
|
|
*/
|
|
;(function extendToAsynchronousCallbacks(window, Raven) {
|
|
"use strict";
|
|
|
|
var _helper = function _helper(fnName) {
|
|
var originalFn = window[fnName];
|
|
window[fnName] = function ravenAsyncExtension() {
|
|
// Make a copy of the arguments
|
|
var args = [].slice.call(arguments);
|
|
var originalCallback = args[0];
|
|
if (typeof (originalCallback) === 'function') {
|
|
args[0] = Raven.wrap(originalCallback);
|
|
}
|
|
// IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it
|
|
// also supports only two arguments and doesn't care what this is, so we
|
|
// can just call the original function directly.
|
|
if (originalFn.apply) {
|
|
return originalFn.apply(this, args);
|
|
} else {
|
|
return originalFn(args[0], args[1]);
|
|
}
|
|
};
|
|
};
|
|
|
|
_helper('setTimeout');
|
|
_helper('setInterval');
|
|
|
|
}(window, window.Raven));
|