Отримайте версію IE від User-Agent
var ie = 0;
try { ie = navigator.userAgent.match( /(MSIE |Trident.*rv[ :])([0-9]+)/ )[ 2 ]; }
catch(e){}
Як це працює: Рядок агента користувача для всіх версій IE включає в себе частину «MSIE простір версії » або «Trident інших текстового с.в. простору або двокрапка версію ». Знаючи це, ми вибираємо номер версії із String.match()
звичайного виразу. try-catch
Блок використовується для скорочення коду, в іншому випадку ми повинні були б перевірити межі масиву для не-IE браузерів.
Примітка . Користувач-агент може бути підробленим або пропущеним, іноді ненавмисно, якщо користувач перевів браузер у "режим сумісності". Хоча це на практиці не виглядає великою проблемою.
Отримайте версію IE без User-Agent
var d = document, w = window;
var ie = ( !!w.MSInputMethodContext ? 11 : !d.all ? 99 : w.atob ? 10 :
d.addEventListener ? 9 : d.querySelector ? 8 : w.XMLHttpRequest ? 7 :
d.compatMode ? 6 : w.attachEvent ? 5 : 1 );
Як це працює: Кожна версія IE додає підтримку додаткових функцій, яких не було в попередніх версіях. Тож ми можемо перевірити на наявність функцій зверху вниз. Потрійна послідовність використовується тут для стислості, хоча if-then
і switch
заяви будуть працювати так само добре. Змінна ie
встановлюється на ціле число 5-11, або 1 для старшого, або 99 для новішого / не IE. Ви можете встановити його на 0, якщо ви хочете точно перевірити IE 1-11.
Примітка. Виявлення об'єкта може порушитися, якщо ваш код запущений на сторінці зі сторонніми сценаріями, які додають поліфайли для таких речей document.addEventListener
. У таких ситуаціях найкращим варіантом є користувальницький агент.
Визначте, чи переглядач сучасний
Якщо вас цікавить лише те, чи підтримує браузер більшість стандартів HTML 5 та CSS 3, ви можете обґрунтовано припустити, що IE 8 та новіші версії залишаються основними проблемами програм. Тестування на window.getComputedStyle
предмет дасть вам досить непоганий поєднання сучасних браузерів (IE 9, FF 4, Chrome 11, Safari 5, Opera 11.5). IE 9 значно покращує підтримку стандартів, але для нативної анімації CSS потрібен IE 10.
var isModernBrowser = ( !document.all || ( document.all && document.addEventListener ) );