@@ -19,6 +19,7 @@ var urlencode = utils.urlencode;
1919var uuid4 = utils . uuid4 ;
2020var htmlTreeAsString = utils . htmlTreeAsString ;
2121var parseUrl = utils . parseUrl ;
22+ var debounce = utils . debounce ;
2223
2324var dsnKeys = 'source protocol user pass host port path' . split ( ' ' ) ,
2425 dsnPattern = / ^ (?: ( \w + ) : ) ? \/ \/ (?: ( \w + ) ( : \w + ) ? @ ) ? ( [ \w \. - ] + ) (?: : ( \d + ) ) ? ( \/ .* ) / ;
@@ -618,7 +619,6 @@ Raven.prototype = {
618619 }
619620 } ,
620621
621-
622622 /**
623623 * Wraps addEventListener to capture UI breadcrumbs
624624 * @param evtName the event name (e.g. "click")
@@ -644,6 +644,17 @@ Raven.prototype = {
644644 } ;
645645 } ,
646646
647+ _keypressEventHandler : function ( ) {
648+ var self = this ;
649+
650+ // TODO: if somehow user switches keypress target before
651+ // debounce timeout is triggered, we will only capture
652+ // a single breadcrumb from the LAST target (acceptable?)
653+ return debounce ( function ( evt ) {
654+ self . _breadcrumbEventHandler ( 'keypress' ) ( evt ) ;
655+ } , 500 ) ; // 500ms after last consecutive keypress, record breadcrumb
656+ } ,
657+
647658 /**
648659 * Captures a breadcrumb of type "navigation", normalizing input URLs
649660 * @param to the originating URL
@@ -727,8 +738,12 @@ Raven.prototype = {
727738
728739 // TODO: more than just click
729740 var before ;
730- if ( ( global === 'EventTarget' || global === 'Node' ) && evt === 'click' ) {
731- before = self . _breadcrumbEventHandler ( evt , fn ) ;
741+ if ( global === 'EventTarget' || global === 'Node' ) {
742+ if ( evt === 'click' ) {
743+ before = self . _breadcrumbEventHandler ( evt , fn ) ;
744+ } else if ( evt === 'keypress' ) {
745+ before = self . _keypressEventHandler ( ) ;
746+ }
732747 }
733748 return orig . call ( this , evt , self . wrap ( fn , undefined , before ) , capture , secure ) ;
734749 } ;
@@ -764,6 +779,7 @@ Raven.prototype = {
764779 // to the document. Do this before we instrument addEventListener.
765780 if ( this . _hasDocument ) {
766781 document . addEventListener ( 'click' , self . _breadcrumbEventHandler ( 'click' ) ) ;
782+ document . addEventListener ( 'keypress' , self . _keypressEventHandler ( ) ) ;
767783 }
768784
769785 // event targets borrowed from bugsnag-js:
0 commit comments