/** * @class Ext.feature * @singleton * * A simple class to verify if a browser feature exists or not on the current device. * * if (Ext.feature.has.Canvas) { * // do some cool things with canvas here * } * * See the {@link #has} property/method for details of the features that can be detected. * */ /** * @method has * @member Ext.feature * Verifies if a browser feature exists or not on the current device. * * A "hybrid" property, can be either accessed as a method call, i.e: * * if (Ext.feature.has('Canvas')) { * // ... * } * * or as an object with boolean properties, i.e: * * if (Ext.feature.has.Canvas) { * // ... * } * * For possible properties/parameter values see `Ext.supports`. * * @param {String} name The feature name to check. * @return {Boolean} */ /** * @class Ext.supports * * Contains information about features supported in the current environment as well * as bugs detected. * * @singleton */] /** * @property CloneNodeCopiesExpando `true` if the native DOM cloneNode method copies * expando properties to the newly cloned node. * * This property is available at application boot time, before document ready. * @type {Boolean} */ /** * @property CSSPointerEvents `true` if document environment supports the CSS3 * pointer-events style. * * This property is available at application boot time, before document ready. * @type {Boolean} */ /** * @property CSS3BoxShadow `true` if document environment supports the CSS3 * box-shadow style. * * This property is available at application boot time, before document ready. * @type {Boolean} */ /** * @property ClassList `true` if document environment supports the HTML5 * classList API. * * This property is available at application boot time, before document ready. * @type {Boolean} */ /** * @property Canvas `true` if the device supports Canvas. * * This property is available at application boot time, before document ready. * @type {Boolean} */ /** * @property Svg `true` if the device supports SVG. * * This property is available at application boot time, before document ready. * @type {Boolean} */ /** * @property Vml `true` if the device supports VML. * @type {Boolean} * * This property is available at application boot time, before document ready. */ /** * @property {Boolean} Touch `true` if the browser supports touch input. * * This property is available at application boot time, before document ready. */ /** * @property {Boolean} TouchEvents * * `true` if the device supports touch events (`touchstart`, `touchmove`, `touchend`). * * This property is available at application boot time, before document ready. */ /** * @property {Boolean} TouchAction * @private * * A bit flag representing which property values the browser recognizes as valid * values of the CSS `touch-action` property. * * panX 1 "00000001" * panY 2 "00000010" * pinchZoom 4 "00000100" * doubleTapZoom 8 "00001000" */ /** * @property Orientation `true` if the device supports different orientations. * @type {Boolean} * * This property is available at application boot time, before document ready. */ /** * @property OrientationChange `true` if the device supports the `orientationchange` * event. * * This property is available at application boot time, before document ready. * @type {Boolean} */ /** * @property DeviceMotion `true` if the device supports device motion (acceleration * and rotation rate). * * This property is available at application boot time, before document ready. * @type {Boolean} */ /** * @property Geolocation `true` if the device supports GeoLocation. * @type {Boolean} * * This property is available at application boot time, before document ready. */ /** * @property Range `true` if browser support document.createRange native method. * See https://developer.mozilla.org/en/DOM/range. * * This property is available at application boot time, before document ready. * @type {Boolean} */ /** * @property CreateContextualFragment `true` if browser support CreateContextualFragment * range native methods. * See https://developer.mozilla.org/en/DOM/range.createContextualFragment * * This property is available at application boot time, before document ready. * @type {Boolean} */ /** * @property History `true` if the device supports HTML5 history. See * https://developer.mozilla.org/en/DOM/Manipulating_the_browser_history * * This property is available at application boot time, before document ready. * @type {Boolean} */ /** * @property Css3DTransforms `true` if the device supports CSS3DTransform. * @type {Boolean} * * This property is available at application boot time, before document ready. */ /** * @property Transitions `true` if the device supports CSS3 Transitions. * * This property is available at application boot time, before document ready. * @type {Boolean} */ /** * @property Audio `true` if the device supports the HTML5 `audio` tag. * * This property is available at application boot time, before document ready. * @type {Boolean} */ /** * @property Video `true` if the device supports the HTML5 `video` tag. * * This property is available at application boot time, before document ready. * @type {Boolean} */ /** * @property LocalStorage `true` if localStorage is supported. * * This property is available at application boot time, before document ready. * @type {Boolean} */ /** * @property {Boolean} XmlQuerySelector `true` if the browsers supports querySelector * and querySelectorAll methods on XML nodes. * * This property is available at application boot time, before document ready. */ /** * @property XHR2 `true` if the browser supports XMLHttpRequest * * This property is available at application boot time, before document ready. * @type {Boolean} */ /** * @property XHRUploadProgress `true` if the browser supports XMLHttpRequest * upload progress info * * This property is available at application boot time, before document ready. * @type {Boolean} */ /** * @property NumericInputPlaceHolder `true` if the browser supports placeholders * on numeric input fields * * This property is available at application boot time, before document ready. * @type {Boolean} */ /** * @property {String} matchesSelector * The method name which matches an element against a selector if implemented in this environment. * * This property is available at application boot time, before document ready. */ /** * @property RightMargin `true` if the device supports right margin. * See https://bugs.webkit.org/show_bug.cgi?id=13343 for why this is needed. * * This property is *NOT* available at application boot time. Only after the document ready event. * @type {Boolean} */ /** * @property DisplayChangeInputSelectionBug `true` if INPUT elements lose their * selection when their display style is changed. Essentially, if a text input * has focus and its display style is changed, the I-beam disappears. * * This bug is encountered due to the work around in place for the {@link #RightMargin} * bug. This has been observed in Safari 4.0.4 and older, and appears to be fixed * in Safari 5. It's not clear if Safari 4.1 has the bug, but it has the same WebKit * version number as Safari 5 (according to http://unixpapa.com/js/gecko.html). * * This property is available at application boot time, before document ready. */ /** * @property DisplayChangeTextAreaSelectionBug `true` if TEXTAREA elements lose their * selection when their display style is changed. Essentially, if a text area has * focus and its display style is changed, the I-beam disappears. * * This bug is encountered due to the work around in place for the {@link #RightMargin} * bug. This has been observed in Chrome 10 and Safari 5 and older, and appears to * be fixed in Chrome 11. * * This property is available at application boot time, before document ready. */ /** * @property TransparentColor `true` if the device supports transparent color. * @type {Boolean} * * This property is *NOT* available at application boot time. Only after the document ready event. */ /** * @property ComputedStyle `true` if the browser supports document.defaultView.getComputedStyle(). * @type {Boolean} * * This property is *NOT* available at application boot time. Only after the document ready event. */ /** * @property Float `true` if the device supports CSS float. * @type {Boolean} * * This property is available at application boot time, before document ready. */ /** * @property CSS3BorderRadius `true` if the device supports CSS3 border radius. * @type {Boolean} * * This property is *NOT* available at application boot time. Only after the document ready event. */ /** * @property CSS3LinearGradient `true` if the device supports CSS3 linear gradients. * @type {Boolean} * * This property is available at application boot time, before document ready. */ /** * @property MouseEnterLeave `true` if the browser supports mouseenter and mouseleave events * @type {Boolean} * * This property is available at application boot time, before document ready. */ /** * @property MouseWheel `true` if the browser supports the mousewheel event * @type {Boolean} * * This property is available at application boot time, before document ready. */ /** * @property Opacity `true` if the browser supports normal css opacity * @type {Boolean} * * This property is available at application boot time, before document ready. */ /** * @property Placeholder `true` if the browser supports the HTML5 placeholder attribute on inputs * @type {Boolean} * * This property is available at application boot time, before document ready. */ /** * @property Direct2DBug `true` if when asking for an element's dimension via offsetWidth or offsetHeight, * getBoundingClientRect, etc. the browser returns the subpixel width rounded to the nearest pixel. * * This property is available at application boot time, before document ready. * @type {Boolean} */ /** * @property BoundingClientRect `true` if the browser supports the getBoundingClientRect method on elements * @type {Boolean} * * This property is available at application boot time, before document ready. */ /** * @property RotatedBoundingClientRect `true` if the BoundingClientRect is * rotated when the element is rotated using a CSS transform. * @type {Boolean} * * This property is *NOT* available at application boot time. Only after the document ready event. */ /** * @property ChildContentClearedWhenSettingInnerHTML `true` if created child elements * lose their innerHTML when modifying the innerHTML of the parent element. * @type {Boolean} * * This property is *NOT* available at application boot time. Only after the document ready event. */ /** * @property TextAreaMaxLength `true` if the browser supports maxlength on textareas. * @type {Boolean} * * This property is available at application boot time, before document ready. */ /** * @property GetPositionPercentage `true` if the browser will return the left/top/right/bottom * position as a percentage when explicitly set as a percentage value. * * This property is *NOT* available at application boot time. Only after the document ready event. * @type {Boolean} */ /** * @property {Boolean} ScrollWidthInlinePaddingBug * In some browsers the right padding of an overflowing element is not accounted * for in its scrollWidth. The result can vary depending on whether or not * The element contains block-level children. This method tests the effect * of padding on scrollWidth when there are no block-level children inside the * overflowing element. * * This method returns true if the browser is affected by this bug. * * This property is *NOT* available at application boot time. Only after the document ready event. */ /** * @property {Boolean} SpecialKeyDownRepeat * True if the browser fires the keydown event on specialkey autorepeat * * note 1: IE fires ONLY the keydown event on specialkey autorepeat * note 2: Safari < 3.1, Gecko (Mac/Linux) & Opera fire only the keypress event on * specialkey autorepeat (research done by Jan Wolter at * http://unixpapa.com/js/key.html) * note 3: Opera 12 behaves like other modern browsers so this workaround does not * work anymore * * This property is available at application boot time, before document ready. */ /** * @property {Boolean} EmulatedMouseOver * True if the browser emulates a mouseover event on tap (mobile safari) * * This property is available at application boot time, before document ready. */ /** * @property Hashchange True if the user agent supports the hashchange event * * This property is available at application boot time, before document ready. * @type {Boolean} */ /** * @property {Boolean} AsyncFocusEvents * `true` if the browser fires focus events (focus, blur, focusin, focusout) * asynchronously, i.e. in a separate event loop invocation. This is only true * for all versions Internet Explorer; Microsoft Edge and other browsers fire * focus events synchronously. */ /** * @property {Boolean} HighContrastMode `true` if the browser is currently * running in Windows High Contrast accessibility mode. * * @property {Object} accessibility Accessibility features. * * @property {Boolean} accessibility.Images `true` if the browser is configured * to display images. * * @property {Boolean} accessibility.BackgroundImages `true` if the browser * is configured to display background images. * * @property {Boolean} accessibility.BorderColors `true` if the browser * is configured to honor CSS styling for border colors. * * @property {Boolean} accessibility.LightOnDark `true` if the browser * is currently using reverse colors in light-on-dark accessibility mode. */ /** * @property ViewportUnits `true` if the device supports ViewportUnits. * @type {Boolean} * */ /** * @property Selectors2 `true` if the browser supports the CSS selector API level 2. * https://dev.w3.org/2006/webapi/selectors-api2/ * @type {Boolean} * */ /** * @property CannotScrollExactHeight * @type {Boolean} * * Feature detect the support of browsers that are unable to scroll elements that are the same * height as the native scrollbar height. */