if (document.documentElement.firstElementChild === undefined) { // (1)
Object.defineProperty(Element.prototype, 'firstElementChild', { // (2)
get: function() {
var el = this.firstChild;
do {
if (el.nodeType === 1) {
return el;
}
el = el.nextSibling;
} while (el);
return null;
}
});
}
Вот код полифилла, добавляющего в IE8- свойство firstElementChild. Я хочу аналогично добавить префиксное CSS-свойство, но под именем без префикса. Можно записать в стили свойство со всеми префиксами, например
<style>
border-radius: 10px;
-moz-border-radius: 10px;
-webkit-border-radius:10px;
</style>
И обычно я так и делаю. Но если на странице или определенной ее части гарантированно есть JavaScript, то зачем городить такой огород?
Можно ведь записать только
<style>
border-radius: 10px;
</style>
А если браузер пользователя поддерживает только -webkit-border-radius, то как в вышеуказанном полифилле, записать или скопировать в прототип свойство -webkit-border-radius под именем border-radius. Просто чтобы одновременно обеспечить поддержку префиксного свойства и не писать все эти префиксы в таблицу стилей. Но вот как это сделать?
Проще говоря, нужно что-то типа родительСтиля.prototype.borderRadius = WebkitBorderRadius