@@ -27,6 +27,7 @@ function Recorder(window) {
2727}
2828
2929Recorder . eventHandlers = { } ;
30+ Recorder . mutationObservers = { } ;
3031Recorder . addEventHandler = function ( handlerName , eventName , handler , options ) {
3132 handler . handlerName = handlerName ;
3233 if ( ! options ) options = false ;
@@ -37,6 +38,13 @@ Recorder.addEventHandler = function(handlerName, eventName, handler, options) {
3738 this . eventHandlers [ key ] . push ( handler ) ;
3839} ;
3940
41+ Recorder . addMutationObserver = function ( observerName , callback , config ) {
42+ const observer = new MutationObserver ( callback ) ;
43+ observer . observerName = observerName ;
44+ observer . config = config ;
45+ this . mutationObservers [ observerName ] = observer ;
46+ } ;
47+
4048Recorder . prototype . parseEventKey = function ( eventKey ) {
4149 if ( eventKey . match ( / ^ C _ / ) ) {
4250 return { eventName : eventKey . substring ( 2 ) , capture : true } ;
@@ -59,6 +67,10 @@ Recorder.prototype.attach = function() {
5967 this . eventListeners [ eventKey ] . push ( handlers [ i ] ) ;
6068 }
6169 }
70+ for ( let observerName in Recorder . mutationObservers ) {
71+ const observer = Recorder . mutationObservers [ observerName ] ;
72+ observer . observe ( this . window . document . body , observer . config ) ;
73+ }
6274 this . attached = true ;
6375 }
6476} ;
@@ -72,6 +84,10 @@ Recorder.prototype.detach = function() {
7284 this . window . document . removeEventListener ( eventName , this . eventListeners [ eventKey ] [ i ] , capture ) ;
7385 }
7486 }
87+ for ( let observerName in Recorder . mutationObservers ) {
88+ const observer = Recorder . mutationObservers [ observerName ] ;
89+ observer . disconnect ( ) ;
90+ }
7591 this . eventListeners = { } ;
7692 this . attached = false ;
7793} ;
0 commit comments