@@ -736,7 +736,6 @@ Raven.prototype = {
736
736
// TODO: if somehow user switches keypress target before
737
737
// debounce timeout is triggered, we will only capture
738
738
// a single breadcrumb from the FIRST target (acceptable?)
739
-
740
739
return function ( evt ) {
741
740
var target = evt . target ,
742
741
tagName = target && target . tagName ;
@@ -755,7 +754,7 @@ Raven.prototype = {
755
754
}
756
755
clearTimeout ( timeout ) ;
757
756
self . _keypressTimeout = setTimeout ( function ( ) {
758
- self . _keypressTimeout = null ;
757
+ self . _keypressTimeout = null ;
759
758
} , debounceDuration ) ;
760
759
} ;
761
760
} ,
@@ -841,13 +840,24 @@ Raven.prototype = {
841
840
842
841
// More breadcrumb DOM capture ... done here and not in `_instrumentBreadcrumbs`
843
842
// so that we don't have more than one wrapper function
844
- var before ;
843
+ var before ,
844
+ clickHandler ,
845
+ keypressHandler ;
846
+
845
847
if ( autoBreadcrumbs && autoBreadcrumbs . dom && ( global === 'EventTarget' || global === 'Node' ) ) {
846
- if ( evtName === 'click' ) {
847
- before = self . _breadcrumbEventHandler ( evtName ) ;
848
- } else if ( evtName === 'keypress' ) {
849
- before = self . _keypressEventHandler ( ) ;
850
- }
848
+ // NOTE: generating multiple handlers per addEventListener invocation, should
849
+ // revisit and verify we can just use one (almost certainly)
850
+ clickHandler = self . _breadcrumbEventHandler ( 'click' ) ;
851
+ keypressHandler = self . _keypressEventHandler ( ) ;
852
+ before = function ( evt ) {
853
+ // need to intercept every DOM event in `before` argument, in case that
854
+ // same wrapped method is re-used for different events (e.g. mousemove THEN click)
855
+ // see #724
856
+ if ( evt . type === 'click' )
857
+ return clickHandler ( evt ) ;
858
+ else if ( evt . type === 'keypress' )
859
+ return keypressHandler ( evt ) ;
860
+ } ;
851
861
}
852
862
return orig . call ( this , evtName , self . wrap ( fn , undefined , before ) , capture , secure ) ;
853
863
} ;
0 commit comments