IE9-11 определяет стиль преобразования: save-3d

Я сделал трехмерное меню для проекта, и, естественно, IE вызывает проблемы, потому что IE10+, несмотря на то, что 3D-преобразования работают, не поддерживает стиль преобразования: save-3d. Я пробовал методы обхода, применяя преобразования к каждому дочернему элементу контейнера 3D-меню, но анимация выглядит ужасно, если не сказать больше. Решив полностью отказаться от 3d для IE, но не имея возможности использовать условные таблицы стилей для IE10+, я попытался определить значение свойства save-3d следующим образом:

var detect = document.createElement("div");
detect.style.transformStyle = "preserve-3d";
if (detect.style.transformStyle.length > 0) {
  document.getElementsByTagName("html")[0].className = "preserve3D";
}

Я заметил, что IE9+ возвращает длину 0 в приведенном выше случае, потому что он не понимает значение, оставляя тег HTML в покое. Chrome и FF знают о сохранении 3d, поэтому класс добавляется. Я мог проверить это, только установив строку пользовательского агента IE11 в IE9 и IE10.

Мой первый вопрос: могу ли я ожидать, что этот метод (тестирование путем установки пользовательского агента в IE11) будет отказоустойчивым, или мне нужно получить настоящие IE9 и IE10?

Мой второй вопрос: есть ли недостаток в проверке значения указанным выше способом? Есть ли более элегантный, лучший, безопасный (в будущем) способ? По моим ожиданиям, это должно быть довольно безопасно, когда IE10+ примет save-3d, или я ошибаюсь?


person tricon    schedule 10.06.2014    source источник
comment
Кажется, это дает достаточно точные результаты. IE11 показывает, что не поддерживает.   -  person Peter Wooster    schedule 13.07.2014