Monday, 10 October 2011

Версии Internet Explorer

Нечасто, но иногда на странице требуется программно определить какой же браузер и какой версии используется. Для этого существует несколько способов определения.

Путем разбора строки, возвращаемой из свойства window.navigator.userAgent, определяется большинство известных браузеров. Метод недостаточно надежен, так как некоторые браузеры (например, Opera) может выдавать себя за другой браузер. Тем не менее в большинстве случаев, при тщательном разборе строки, этой информации достаточно, чтобы идентифицировать браузер.

Другой способ (по сути это утиная проверка - en, ru) основан на проверке существования определенных методов и свойств, поддерживаемых ограниченным количеством браузеров. Этот способ достаточно уверенно определяет марку браузера, но с трудом справляется с версией. Но комбинируя оба способа, можно получить искомое.

Internet Explorer можно узнать по поддержке таких специфических для него объектов как document.all и window.ActiveXObject. Кроме того, следует помнить, что Internet Explorer реализует собственный диалект JavaScript - JScript. А это значит, что существуют дополнительные свойства и функции. В данном случае речь идет о функциях, которые возвращают сведения о текущей версии обработчика сценариев - ScriptEngine, ScriptEngineBuildVersion, ScriptEngineMajorVersion, ScriptEngineMinorVersion. В зависимости от версии операционной системы, браузера, обработчика сценариев возвращаемая информация отличается.

ScriptEngineBuildVersion в данном случае несет мало информации, так как сообщает о номере сборки. ScriptEngine всегда вернет строку "Jscript", а ScriptEngineMajorVersion - пока цифру 5. Хотя эти значения функций одинаковые, но само их наличие уже идентифицирует браузер. Оставшаяся функция - ScriptEngineMinorVersion - вернет младший номера версии, который специфичен для каждого браузера и по удивительному совпадению равен старшей версии браузера:
Браузер ScriptEngine() ScriptEngineMajorVersion() ScriptEngineMinorVersion()
Internet Explorer 6.0 JScript 5 6
Internet Explorer 7.0 JScript 5 7
Internet Explorer 8.0 JScript 5 8
  1. Определение возможностей браузера
  2. Сведения о версиях JScript
  3. Определение браузера и его версии

2 comments:

  1. Это получение версии JScript (jscript.dll), а не IE. Например, у меня на IE6 ScriptEngineMinorVersion()==7, т.к. установлен WSH5.7

    ReplyDelete
    Replies
    1. ОБ этом я и написал "возвращают сведения о текущей версии обработчика сценариев". Но Вы верно подметили, что версии могут не совпадать. Спасибо за замечание.

      Delete