Skip to content

Commit 9b2887b

Browse files
committed
Merge pull request #84 from bisrael/master
RFC: Add Events to Raven
2 parents ab0a723 + 930d908 commit 9b2887b

File tree

1 file changed

+56
-1
lines changed

1 file changed

+56
-1
lines changed

src/raven.js

+56-1
Original file line numberDiff line numberDiff line change
@@ -230,6 +230,34 @@ var Raven = {
230230
}
231231
};
232232

233+
function triggerEvent(eventType, options) {
234+
var event, key;
235+
236+
eventType = 'raven' + eventType[0].toUpperCase() + eventType.substr(1);
237+
238+
if (document.createEvent) {
239+
event = document.createEvent("HTMLEvents");
240+
event.initEvent(eventType, true, true);
241+
} else {
242+
event = document.createEventObject();
243+
event.eventType = eventType;
244+
}
245+
246+
if (typeof options !== "object") {
247+
options = {}
248+
}
249+
250+
for (key in options) if (options.hasOwnProperty(key)) {
251+
event[key] = options[key]
252+
}
253+
254+
if (document.createEvent) {
255+
document.dispatchEvent(event);
256+
} else {
257+
document.fireEvent("on" + event.eventType.toLowerCase(), event);
258+
}
259+
}
260+
233261
var uriKeys = 'source protocol authority userInfo user password host port relative path directory file query anchor'.split(' '),
234262
uriPattern = /^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/;
235263

@@ -300,6 +328,11 @@ function handleStackInfo(stackInfo, options) {
300328
});
301329
}
302330

331+
triggerEvent('handle', {
332+
stackInfo: stackInfo,
333+
options: options
334+
});
335+
303336
processException(
304337
stackInfo.name,
305338
stackInfo.message,
@@ -471,8 +504,30 @@ function send(data) {
471504
makeRequest(data);
472505
}
473506

507+
474508
function makeRequest(data) {
475-
new Image().src = globalServer + getAuthQueryString() + '&sentry_data=' + encodeURIComponent(JSON.stringify(data));
509+
var img, src;
510+
511+
function success() {
512+
triggerEvent('success', {
513+
data: data,
514+
src: src
515+
});
516+
}
517+
518+
function failure() {
519+
triggerEvent('failure', {
520+
data: data,
521+
src: src
522+
});
523+
}
524+
525+
src = globalServer + getAuthQueryString() + '&sentry_data=' + encodeURIComponent(JSON.stringify(data));
526+
img = new Image();
527+
img.onload = success;
528+
img.onerror = failure;
529+
img.onabort = failure;
530+
img.src = src;
476531
}
477532

478533
function isSetup() {

0 commit comments

Comments
 (0)