@samitouri / QOS-React-2 / commits / 471b4af2c8

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;