Properly cache the css transform support result
This commit is contained in:
@@ -26,40 +26,41 @@ ol.dom.BrowserFeature = {
|
|||||||
* http://caniuse.com/#feat=transforms2d
|
* http://caniuse.com/#feat=transforms2d
|
||||||
* @return {boolean}
|
* @return {boolean}
|
||||||
*/
|
*/
|
||||||
ol.dom.canUseCssTransform = function() {
|
ol.dom.canUseCssTransform = (function() {
|
||||||
goog.asserts.assert(!goog.isNull(document.body));
|
|
||||||
var canUseCssTransform;
|
var canUseCssTransform;
|
||||||
if (!goog.isDef(canUseCssTransform)) {
|
return function() {
|
||||||
canUseCssTransform = (function() {
|
if (!goog.isDef(canUseCssTransform)) {
|
||||||
|
goog.asserts.assert(!goog.isNull(document.body));
|
||||||
if (!goog.global.getComputedStyle) {
|
if (!goog.global.getComputedStyle) {
|
||||||
// this browser is ancient
|
// this browser is ancient
|
||||||
return false;
|
canUseCssTransform = false;
|
||||||
}
|
} else {
|
||||||
var el = goog.dom.createElement(goog.dom.TagName.P),
|
var el = goog.dom.createElement(goog.dom.TagName.P),
|
||||||
has2d,
|
has2d,
|
||||||
transforms = {
|
transforms = {
|
||||||
'webkitTransform': '-webkit-transform',
|
'webkitTransform': '-webkit-transform',
|
||||||
'OTransform': '-o-transform',
|
'OTransform': '-o-transform',
|
||||||
'msTransform': '-ms-transform',
|
'msTransform': '-ms-transform',
|
||||||
'MozTransform': '-moz-transform',
|
'MozTransform': '-moz-transform',
|
||||||
'transform': 'transform'
|
'transform': 'transform'
|
||||||
};
|
};
|
||||||
goog.dom.appendChild(document.body, el);
|
goog.dom.appendChild(document.body, el);
|
||||||
for (var t in transforms) {
|
for (var t in transforms) {
|
||||||
if (t in el.style) {
|
if (t in el.style) {
|
||||||
el.style[t] = 'translate(1px,1px)';
|
el.style[t] = 'translate(1px,1px)';
|
||||||
has2d = goog.global.getComputedStyle(el).getPropertyValue(
|
has2d = goog.global.getComputedStyle(el).getPropertyValue(
|
||||||
transforms[t]);
|
transforms[t]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
goog.dom.removeNode(el);
|
||||||
goog.dom.removeNode(el);
|
|
||||||
|
|
||||||
return (goog.isDefAndNotNull(has2d) && has2d.length > 0 &&
|
canUseCssTransform = (goog.isDefAndNotNull(has2d) && has2d.length > 0 &&
|
||||||
has2d !== 'none');
|
has2d !== 'none');
|
||||||
}());
|
}
|
||||||
}
|
}
|
||||||
return canUseCssTransform;
|
return canUseCssTransform;
|
||||||
};
|
};
|
||||||
|
}());
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -68,40 +69,41 @@ ol.dom.canUseCssTransform = function() {
|
|||||||
* http://caniuse.com/#feat=transforms3d
|
* http://caniuse.com/#feat=transforms3d
|
||||||
* @return {boolean}
|
* @return {boolean}
|
||||||
*/
|
*/
|
||||||
ol.dom.canUseCssTransform3D = function() {
|
ol.dom.canUseCssTransform3D = (function() {
|
||||||
goog.asserts.assert(!goog.isNull(document.body));
|
|
||||||
var canUseCssTransform3D;
|
var canUseCssTransform3D;
|
||||||
if (!goog.isDef(canUseCssTransform3D)) {
|
return function() {
|
||||||
canUseCssTransform3D = (function() {
|
if (!goog.isDef(canUseCssTransform3D)) {
|
||||||
|
goog.asserts.assert(!goog.isNull(document.body));
|
||||||
if (!goog.global.getComputedStyle) {
|
if (!goog.global.getComputedStyle) {
|
||||||
// this browser is ancient
|
// this browser is ancient
|
||||||
return false;
|
canUseCssTransform3D = false;
|
||||||
}
|
} else {
|
||||||
var el = goog.dom.createElement(goog.dom.TagName.P),
|
var el = goog.dom.createElement(goog.dom.TagName.P),
|
||||||
has3d,
|
has3d,
|
||||||
transforms = {
|
transforms = {
|
||||||
'webkitTransform': '-webkit-transform',
|
'webkitTransform': '-webkit-transform',
|
||||||
'OTransform': '-o-transform',
|
'OTransform': '-o-transform',
|
||||||
'msTransform': '-ms-transform',
|
'msTransform': '-ms-transform',
|
||||||
'MozTransform': '-moz-transform',
|
'MozTransform': '-moz-transform',
|
||||||
'transform': 'transform'
|
'transform': 'transform'
|
||||||
};
|
};
|
||||||
goog.dom.appendChild(document.body, el);
|
goog.dom.appendChild(document.body, el);
|
||||||
for (var t in transforms) {
|
for (var t in transforms) {
|
||||||
if (t in el.style) {
|
if (t in el.style) {
|
||||||
el.style[t] = 'translate3d(1px,1px,1px)';
|
el.style[t] = 'translate3d(1px,1px,1px)';
|
||||||
has3d = goog.global.getComputedStyle(el).getPropertyValue(
|
has3d = goog.global.getComputedStyle(el).getPropertyValue(
|
||||||
transforms[t]);
|
transforms[t]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
goog.dom.removeNode(el);
|
||||||
goog.dom.removeNode(el);
|
|
||||||
|
|
||||||
return (goog.isDefAndNotNull(has3d) && has3d.length > 0 &&
|
canUseCssTransform3D = (goog.isDefAndNotNull(has3d) &&
|
||||||
has3d !== 'none');
|
has3d.length > 0 && has3d !== 'none');
|
||||||
}());
|
}
|
||||||
}
|
}
|
||||||
return canUseCssTransform3D;
|
return canUseCssTransform3D;
|
||||||
};
|
};
|
||||||
|
}());
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Reference in New Issue
Block a user