window.MXOBJ = MXOBJ = window.MXOBJ||{}; MXOBJ.attachEvent = MXOBJ.attachEvent || function(e,t,f) {if (e&&e.addEventListener)e.addEventListener(t, f, true); else e&&e.attachEvent('on'+t, f);}; MXOBJ.mouseEventCapturer_Elem = null; MXOBJ.mouseEventCapturer_Func = function(evt) { evt = evt||window.event; if (MXOBJ.mouseEventCapturer_Elem==null || evt.isCustom===1) {return;} let evObj = document.createEvent('MouseEvents'); evObj.initMouseEvent( evt.type, false, true, window, 0, evt.screenX, evt.screenY, evt.clientX, evt.clientY, false, false, false, false, 0, MXOBJ.mouseEventCapturer_Elem); evObj.isCustom = 1; MXOBJ.mouseEventCapturer_Elem.dispatchEvent(evObj); // dispatching the original 'event' object does cause : InvalidStateError: Failed to execute 'dispatchEvent' on 'EventTarget': The event is already being dispatched. }; MXOBJ.attachEvent(document, 'mousemove', MXOBJ.mouseEventCapturer_Func); MXOBJ.attachEvent(document, 'mouseup', MXOBJ.mouseEventCapturer_Func);