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.
64 lines
1.9 KiB
64 lines
1.9 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 isEventSupported
|
||
|
*/
|
||
|
|
||
|
'use strict';
|
||
|
|
||
|
var ExecutionEnvironment = require("./ExecutionEnvironment");
|
||
|
|
||
|
var useHasFeature;
|
||
|
if (ExecutionEnvironment.canUseDOM) {
|
||
|
useHasFeature =
|
||
|
document.implementation &&
|
||
|
document.implementation.hasFeature &&
|
||
|
// always returns true in newer browsers as per the standard.
|
||
|
// @see http://dom.spec.whatwg.org/#dom-domimplementation-hasfeature
|
||
|
document.implementation.hasFeature('', '') !== true;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Checks if an event is supported in the current execution environment.
|
||
|
*
|
||
|
* NOTE: This will not work correctly for non-generic events such as `change`,
|
||
|
* `reset`, `load`, `error`, and `select`.
|
||
|
*
|
||
|
* Borrows from Modernizr.
|
||
|
*
|
||
|
* @param {string} eventNameSuffix Event name, e.g. "click".
|
||
|
* @param {?boolean} capture Check if the capture phase is supported.
|
||
|
* @return {boolean} True if the event is supported.
|
||
|
* @internal
|
||
|
* @license Modernizr 3.0.0pre (Custom Build) | MIT
|
||
|
*/
|
||
|
function isEventSupported(eventNameSuffix, capture) {
|
||
|
if (!ExecutionEnvironment.canUseDOM ||
|
||
|
capture && !('addEventListener' in document)) {
|
||
|
return false;
|
||
|
}
|
||
|
|
||
|
var eventName = 'on' + eventNameSuffix;
|
||
|
var isSupported = eventName in document;
|
||
|
|
||
|
if (!isSupported) {
|
||
|
var element = document.createElement('div');
|
||
|
element.setAttribute(eventName, 'return;');
|
||
|
isSupported = typeof element[eventName] === 'function';
|
||
|
}
|
||
|
|
||
|
if (!isSupported && useHasFeature && eventNameSuffix === 'wheel') {
|
||
|
// This is the only way to test support for the `wheel` event in IE9+.
|
||
|
isSupported = document.implementation.hasFeature('Events.wheel', '3.0');
|
||
|
}
|
||
|
|
||
|
return isSupported;
|
||
|
}
|
||
|
|
||
|
module.exports = isEventSupported;
|