Показать сообщение отдельно
  #1 (permalink)  
Старый 23.01.2017, 03:45
Новичок на форуме
Отправить личное сообщение для ergonomic Посмотреть профиль Найти все сообщения от ergonomic
 
Регистрация: 23.01.2017
Сообщений: 3

Проверка поддержки CSS браузером через element.style.property vs DOM.property
Привет всем!
Возник вопрос. Как лучше проверить поддержку свойства CSS и значения свойства. Какой из вариантов наиболее корректен?
function cs(p, v) {
	var e = document.createElement('p');
	e.style.cssText = p + ':' + v; // добавляем к элементу свойство через cssText с целью экранировать ошибку, если значение свойства не поддерживается браузером
	return e.style[p] === v; // проводим сравнение и возвращаем true/false
}

var fx = ['flex', '-webkit-flex', '-webkit-box', '-moz-box', '-ms-flexbox']; // набор значений с вендорными префиксами
for (var i = 0; i < fx.length; i++) {
	console.log(cs('display', fx[i]));
	// по true - что-то начинаем делать
}


Вопрос возникает по-причине того, что все решения по проверке поддержки CSS свойств построены на обращении к DOM-свойству элемента и проверки его существования. Например:
var e = document.createElement('p');
var s = e.style;
if ('flex' in s) console.log('flex');
if ('WebkitFlex' in s) console.log('WebkitFlex');
if ('WebkitBoxFlex' in s) console.log('WebkitBoxFlex');
if ('MozBoxFlex' in s) console.log('MozBox');
if ('msFlex' in s) console.log('msFlex');
Ответить с цитированием