From 9f7d0a54cbba0796f6074fcb13f0c18a2064847d Mon Sep 17 00:00:00 2001 From: Andreas Svensson Date: Mon, 29 Sep 2014 16:59:43 +0200 Subject: [PATCH] Disable ViewportMetrics unless MouseEvent lacks support for pageX/pageY --- src/browser/ReactBrowserEventEmitter.js | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/browser/ReactBrowserEventEmitter.js b/src/browser/ReactBrowserEventEmitter.js index 677b07698634e..1ddf8cdfc0e45 100644 --- a/src/browser/ReactBrowserEventEmitter.js +++ b/src/browser/ReactBrowserEventEmitter.js @@ -83,6 +83,7 @@ var merge = require('merge'); * React Core . General Purpose Event Plugin System */ +var hasEventPageXY; var alreadyListeningTo = {}; var isMonitoringScrollValue = false; var reactTopListenersCounter = 0; @@ -331,12 +332,19 @@ var ReactBrowserEventEmitter = merge(ReactEventEmitterMixin, { * Listens to window scroll and resize events. We cache scroll values so that * application code can access them without triggering reflows. * + * ViewportMetrics is only used by SyntheticMouse/TouchEvent and only when + * pageX/pageY isn't supported (legacy browsers). + * * NOTE: Scroll events do not bubble. * * @see http://www.quirksmode.org/dom/events/scroll.html */ ensureScrollValueMonitoring: function(){ - if (!isMonitoringScrollValue) { + if (hasEventPageXY === undefined) { + hasEventPageXY = + document.createEvent && 'pageX' in document.createEvent('MouseEvent'); + } + if (!hasEventPageXY && !isMonitoringScrollValue) { var refresh = ViewportMetrics.refreshScrollValues; ReactBrowserEventEmitter.ReactEventListener.monitorScrollValue(refresh); isMonitoringScrollValue = true;