Disable ViewportMetrics unless MouseEvent lacks support for pageX/pageY
Andreas Svensson committed
Sep 29, 2014 at 16:59 UTC
471b4af2c8a407c897bbd954b040af297efb10b6
1 file changed
+10
-2
src/renderers/dom/client/ReactBrowserEventEmitter.js
+10
-2
@@ -74,6 +74,7 @@ var isEventSupported = require('isEventSupported');
74
* React Core . General Purpose Event Plugin System
75
*/
76
77
+var hasEventPageXY;
78
var alreadyListeningTo = {};
79
var isMonitoringScrollValue = false;
80
var reactTopListenersCounter = 0;
@@ -345,12 +346,19 @@ var ReactBrowserEventEmitter = assign({}, ReactEventEmitterMixin, {
346
* Listens to window scroll and resize events. We cache scroll values so that
347
* application code can access them without triggering reflows.
348
*
349
+ * ViewportMetrics is only used by SyntheticMouse/TouchEvent and only when
350
+ * pageX/pageY isn't supported (legacy browsers).
351
+ *
352
* NOTE: Scroll events do not bubble.
353
*
354
* @see http://www.quirksmode.org/dom/events/scroll.html
355
*/
352
- ensureScrollValueMonitoring: function() {
353
- if (!isMonitoringScrollValue) {
356
+ ensureScrollValueMonitoring: function(){
357
+ if (hasEventPageXY === undefined) {
358
+ hasEventPageXY =
359
+ document.createEvent && 'pageX' in document.createEvent('MouseEvent');
360
+ }
361
+ if (!hasEventPageXY && !isMonitoringScrollValue) {
362
var refresh = ViewportMetrics.refreshScrollValues;
363
ReactBrowserEventEmitter.ReactEventListener.monitorScrollValue(refresh);
364
isMonitoringScrollValue = true;