Added support to detect vendor-prefixes for non-style objects
This commit is contained in:
@@ -1509,10 +1509,10 @@ OpenLayers.Util.getBrowserName = function() {
|
||||
};
|
||||
|
||||
/**
|
||||
* Constant: VENDOR_DOM_PREFIXES
|
||||
* Constant: VENDOR_PREFIXES
|
||||
* {Array} A list of prefixes to test support for vendor-prefixed properties
|
||||
*/
|
||||
OpenLayers.Util.VENDOR_DOM_PREFIXES = ["", "O", "ms", "Moz", "Webkit"];
|
||||
OpenLayers.Util.VENDOR_PREFIXES = ["", "O", "ms", "Moz", "webkit"];
|
||||
|
||||
/**
|
||||
* Method: getVendorPrefixedCss
|
||||
@@ -1530,7 +1530,8 @@ OpenLayers.Util.getVendorPrefixedCss = (function() {
|
||||
function domToCss(prefixedDom) {
|
||||
return prefixedDom.
|
||||
replace(/([A-Z])/g, function(char) { return "-" + char.toLowerCase(); }).
|
||||
replace(/^ms-/, "-ms-");
|
||||
replace(/^ms-/, "-ms-").
|
||||
replace(/^webkit-/, "-webkit-");
|
||||
}
|
||||
|
||||
return function(property) {
|
||||
@@ -1540,7 +1541,7 @@ OpenLayers.Util.getVendorPrefixedCss = (function() {
|
||||
if (cache[property] === undefined) {
|
||||
var domProperty = property.
|
||||
replace(/(-.)/g, function(c) { return c.charAt(1).toUpperCase(); });
|
||||
var prefixedDom = OpenLayers.Util.getVendorPrefixedDom(domProperty);
|
||||
var prefixedDom = OpenLayers.Util.getVendorPrefixedObj(domProperty);
|
||||
cache[property] = domToCss(prefixedDom);
|
||||
}
|
||||
return cache[property];
|
||||
@@ -1548,39 +1549,44 @@ OpenLayers.Util.getVendorPrefixedCss = (function() {
|
||||
})();
|
||||
|
||||
/**
|
||||
* Method: getVendorPrefixedDom
|
||||
* Method: getVendorPrefixedObj
|
||||
*
|
||||
* Parameters:
|
||||
* object - {Object} Optional object to test for vendor-prefixed properties. Defaults to a DIV's style object.
|
||||
* property - {String} The standard DOM style property name
|
||||
*
|
||||
* Returns:
|
||||
* {String} The DOM style property name supported by the browser or null if
|
||||
* unsupported
|
||||
*/
|
||||
OpenLayers.Util.getVendorPrefixedDom = (function() {
|
||||
OpenLayers.Util.getVendorPrefixedObj = (function() {
|
||||
var cache = {};
|
||||
|
||||
return function(property) {
|
||||
return function getVendorPrefixedObj(obj, property) {
|
||||
// emulate method overloading
|
||||
if (typeof obj === "string") {
|
||||
return getVendorPrefixedObj(document.createElement("div").style, obj);
|
||||
}
|
||||
|
||||
// clear cache for tests
|
||||
if (property === "clear cache") { cache = {}; return; }
|
||||
|
||||
if (cache[property] === undefined) {
|
||||
var el = document.createElement("div"),
|
||||
tmpProp,
|
||||
var tmpProp,
|
||||
i = 0,
|
||||
l = OpenLayers.Util.VENDOR_DOM_PREFIXES.length,
|
||||
l = OpenLayers.Util.VENDOR_PREFIXES.length,
|
||||
prefix;
|
||||
|
||||
cache[property] = null;
|
||||
for(var i=0,l=OpenLayers.Util.VENDOR_DOM_PREFIXES.length; i<l; i++) {
|
||||
prefix = OpenLayers.Util.VENDOR_DOM_PREFIXES[i];
|
||||
for(var i=0,l=OpenLayers.Util.VENDOR_PREFIXES.length; i<l; i++) {
|
||||
prefix = OpenLayers.Util.VENDOR_PREFIXES[i];
|
||||
if(prefix) {
|
||||
tmpProp = prefix + property.charAt(0).toUpperCase() + property.slice(1);
|
||||
} else {
|
||||
tmpProp = property;
|
||||
}
|
||||
|
||||
if(el.style[tmpProp] !== undefined) {
|
||||
if(obj[tmpProp] !== undefined) {
|
||||
cache[property] = tmpProp;
|
||||
break;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user