X-Git-Url: http://git.ithinksw.org/extjs.git/blobdiff_plain/6746dc89c47ed01b165cc1152533605f97eb8e8d..f562e4c6e5fac7bcb445985b99acbea4d706e6f0:/src/core/src/env/FeatureDetector.js diff --git a/src/core/src/env/FeatureDetector.js b/src/core/src/env/FeatureDetector.js index cf2dedea..b36ce691 100644 --- a/src/core/src/env/FeatureDetector.js +++ b/src/core/src/env/FeatureDetector.js @@ -13,21 +13,34 @@ If you are unsure which license is appropriate for your use, please contact the */ /** - * @class Ext.env.FeatureDetector + * Provides useful information about the current browser features. + * Don't instantiate directly, but use the {@link Ext#features} property instead. */ Ext.define('Ext.env.FeatureDetector', { statics: { defaultTests: { + /** + * @property {Boolean} + * True if canvas element supported. + */ Canvas: function() { var element = this.getTestElement('canvas'); return !!(element && element.getContext && element.getContext('2d')); }, + /** + * @property {Boolean} + * True if SVG supported. + */ SVG: function() { var doc = Ext.global.document; return !!(doc.createElementNS && !!doc.createElementNS("http:/" + "/www.w3.org/2000/svg", "svg").createSVGRect); }, + /** + * @property {Boolean} + * True if VML supported. + */ VML: function() { var element = this.getTestElement(), ret = false; @@ -38,39 +51,87 @@ Ext.define('Ext.env.FeatureDetector', { return ret; }, + /** + * @property {Boolean} + * True if we're in Sencha Touch environment. + */ Touch: function() { return ('ontouchstart' in Ext.global) && !(Ext.platform && Ext.platform.name.match(/Windows|MacOSX|Linux/)); }, + /** + * @property {Boolean} + * True if orientation API supported. + */ Orientation: function() { return ('orientation' in Ext.global); }, + /** + * @property {Boolean} + * True if geolocation API supported. + */ Geolocation: function() { return !!Ext.global.navigator.geolocation; }, + /** + * @property {Boolean} + * True if openDatabase API supported. + */ SqlDatabase: function() { return !!Ext.global.openDatabase; }, + /** + * @property {Boolean} + * True if WebSocket API supported. + */ Websockets: function() { return 'WebSocket' in Ext.global; }, + /** + * @property {Boolean} + * True if history.pushState supported. + */ History: function() { return !!(Ext.global.history && Ext.global.history.pushState); }, + /** + * @property {Boolean} + * True if CSS transforms supported. + */ CSSTransforms: function() { return this.isStyleSupported('transform'); }, + /** + * @property {Boolean} + * True if CSS 3D transforms supported. + */ CSS3DTransforms: function() { return this.has('csstransforms') && this.isStyleSupported('perspective'); }, + /** + * @property {Boolean} + * True if CSS animations supported. + */ CSSAnimations: function() { return this.isStyleSupported('animationName'); }, + /** + * @property {Boolean} + * True if CSS transitions supported. + */ CSSTransitions: function() { return this.isStyleSupported('transitionProperty'); }, + /** + * @property {Boolean} + * True if audio element supported. + */ Audio: function() { return !!this.getTestElement('audio').canPlayType; }, + /** + * @property {Boolean} + * True if video element supported. + */ Video: function() { return !!this.getTestElement('video').canPlayType; } @@ -213,11 +274,12 @@ Ext.define('Ext.env.FeatureDetector', { }, function() { -/* - * Global convenient instance of {@link Ext.env.FeatureDetector Ext.env.FeatureDetector} - * @member Ext features - */ -Ext.features = new Ext.env.FeatureDetector(); + /** + * @property {Ext.env.FeatureDetector} features + * @member Ext + * Global convenient instance of {@link Ext.env.FeatureDetector}. + */ + Ext.features = new Ext.env.FeatureDetector(); });