You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
57 lines
1.7 KiB
57 lines
1.7 KiB
10 years ago
|
/**
|
||
|
* Copyright 2013-2015, Facebook, Inc.
|
||
|
* All rights reserved.
|
||
|
*
|
||
|
* This source code is licensed under the BSD-style license found in the
|
||
|
* LICENSE file in the root directory of this source tree. An additional grant
|
||
|
* of patent rights can be found in the PATENTS file in the same directory.
|
||
|
*
|
||
|
* @providesModule MobileSafariClickEventPlugin
|
||
|
* @typechecks static-only
|
||
|
*/
|
||
|
|
||
|
'use strict';
|
||
|
|
||
|
var EventConstants = require("./EventConstants");
|
||
|
|
||
|
var emptyFunction = require("./emptyFunction");
|
||
|
|
||
|
var topLevelTypes = EventConstants.topLevelTypes;
|
||
|
|
||
|
/**
|
||
|
* Mobile Safari does not fire properly bubble click events on non-interactive
|
||
|
* elements, which means delegated click listeners do not fire. The workaround
|
||
|
* for this bug involves attaching an empty click listener on the target node.
|
||
|
*
|
||
|
* This particular plugin works around the bug by attaching an empty click
|
||
|
* listener on `touchstart` (which does fire on every element).
|
||
|
*/
|
||
|
var MobileSafariClickEventPlugin = {
|
||
|
|
||
|
eventTypes: null,
|
||
|
|
||
|
/**
|
||
|
* @param {string} topLevelType Record from `EventConstants`.
|
||
|
* @param {DOMEventTarget} topLevelTarget The listening component root node.
|
||
|
* @param {string} topLevelTargetID ID of `topLevelTarget`.
|
||
|
* @param {object} nativeEvent Native browser event.
|
||
|
* @return {*} An accumulation of synthetic events.
|
||
|
* @see {EventPluginHub.extractEvents}
|
||
|
*/
|
||
|
extractEvents: function(
|
||
|
topLevelType,
|
||
|
topLevelTarget,
|
||
|
topLevelTargetID,
|
||
|
nativeEvent) {
|
||
|
if (topLevelType === topLevelTypes.topTouchStart) {
|
||
|
var target = nativeEvent.target;
|
||
|
if (target && !target.onclick) {
|
||
|
target.onclick = emptyFunction;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
};
|
||
|
|
||
|
module.exports = MobileSafariClickEventPlugin;
|