Введение
Я уже как-то писал статью про определение браузера средствами JavaScript, но сегодня я столкнулся с другой проблемой — как определить конкретную версию Internet Explorer. Как всем известно этот браузер постоянно преподносит нам сюрпризы, и каждая его версия практически живет свое жизнью. Бывают такие ситуации, что код адекватно работает в 9-й версии, но не работает в 8-й, и наоборот. И такие моменты встречаются при работе с каждой версией. Поэтому рано или поздно вам придется столкнуться с проблемой определения конкретной версии IE.
Как оказалось определить версию IE не составляет особого труда. При определении версии можно воспользоваться интересной особенностью Internet Explorer — у каждой версии этого «браузера» имеются уникальные глобальные объекты. Например, в IE9 существует глобальный объект document.addEventListener, и такой объект используется только в версиях старше IE9(включительно). Или же объект document.querySelector — он появился только в версии IE8 и используется в более новых версиях. Такие объекты есть в каждой версии, опираясь на них(проверяя их существование) можно легко составлять условия для конкретных версий Internet Explorer.
Какие объекты присутствуют в различных версиях я приведу в ниже:
IE10+ — window.atob
IE9+ — document.addEventListener
IE8+ — document.querySelector
IE7+ — window.XMLHttpRequest
IE6+ — document.compatMode
Еще один глобальный объект document.all существует во всех версиях IE, но не используется ни в каких других браузерах, основываясь на нем можно отличить IE от других браузеров.
Как определить версию Internet Explorer в javascript. Код
Теперь у нас есть все необходимые составляющие: объект, который есть во всех версиях IE и только в нем — это позволит отличать его от других браузеров. А также у нас есть объекты, которые помогут отличать конкретные версии IE. Ниже приведу несколько примеров, которые наглядно покажут, как на практике можно использовать глобальные объекты IE.
if(document.all){ // код для всех версий IE. В других браузерах выполняться не будет } if(document.all && !window.atob){ // код для IE9 и ниже } if(document.all && !document.addEventListener){ // код для IE8 и ниже } if(document.all && !document.querySelector){ // код для IE7 и ниже } if(document.all && !window.XMLHttpRequest){ // код для IE6 и ниже } if(document.all && window.atob){ // код для IE10 и выше } if(document.all && document.addEventListener){ // код для IE9 и выше } if(document.all && document.querySelector){ // код для IE8 и выше } if(document.all && window.XMLHttpRequest){ // код для IE7 и выше } if(document.all && document.querySelector && !document.addEventListener){ // код только для IE8 }