Array.prototype.slice.call(
document.defaultView.getComputedStyle(document.body, "")
)
.join("")
.match(/(?:-(moz|webkit|ms|khtml)-)/);
Вернет массив с двумя элементами.Один для тире и один без тире, оба в нижнем регистре, для вашего удобства.
Array.prototype.slice.call(
document.defaultView.getComputedStyle(document.body, "")
);
Без проверки браузера вернет массив почти всех свойств CSS, которые понимает браузер.Так как это компьютерный стиль, он не будет отображать сокращенные версии, но в остальном я думаю, что он получит их все.Это быстрый скачок прыжка и переход к автоматическому обнаружению того, что вам нужно, поскольку только вещи с префиксом поставщика начинаются с тире.
IE9, Chrome, Safari, FF.Opera не позволит вам нарезать CSSStyleDeclaration, поскольку вы все равно можете использовать тот же код getComputedStyle и проходить через свойства или проверять конкретный.Opera также хотела быть странной и не сообщать, что префикс поставщика прерван.Спасибо Opera.
Object.keys(CSSStyleDeclaration.prototype)
Работает в IE9 и FF и сообщает версию названий свойств вендора в формате TitleCased (JavaScript).В WebKit не работает, так как прототип только сообщает о методах.
Вот интересная и очень опасная функция, которую я только что написал по этому поводу:
(function(vp,np){
Object.keys(this).filter(function(p){return vp=vp||p.match(/^(Moz|ms)/)}).forEach(function(op){
this.__defineGetter__(np=op.replace(vp[0], ""), function() { return this[op] });
this.__defineSetter__(np, function(val) { this[op] = val.toString() });
}, this);
}).call(CSSStyleDeclaration.prototype);
Я ничего не тестировал. Konquerer.