Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Определение версии браузера (https://javascript.ru/forum/events/5117-opredelenie-versii-brauzera.html)

Beck 16.09.2009 19:32

Определение версии браузера
 
Слышал, что можно определить версию IE браузера.

Хочу создать if/else условие, для загрузки скрипта.

Не доскажете, как это реализовать?

Gvozd 16.09.2009 19:50

Цитата:

Сообщение от Beck
Хочу создать if/else условие, для загрузки скрипта.

глупость.
надо определять не версию браузера, а что он умеет делать
но, раз уж все-таки вы изъявили желание, то вот, делайте:
navigator.userAgent
http://javascript.ru/basic/regular-expression

PS в гугле есть готовый код, вообще-то по вашей теме
учитесь искать, пожалуйста

Octane 16.09.2009 19:58

Conditional Comments

yolka 17.09.2009 01:31

<!--[if IE 8]>< ![endif]-->
<!--[if !(IE 8)]>< ![endif]--> 
<!--[if lt IE 8]>< ![endif]-->
<!--[if gt IE 7]>< ![endif]-->
<!--[if lte IE 7]>< ![endif]-->
<!--[if (IE 7)|(IE 8)]>< ![endif]-->
<!--[if (gte IE 6)&(lte IE 8)]>< ![endif]-->
<!--[if !IE]> --><!-- <![endif]-->


lt = lower than
gt = grater than
lte = lower than or equal
! - exept

dscoma 17.09.2009 17:24

Определить версию IE можно и так:

JS
<script type="text/javascript">
//<![CDATA[
if (navigator.userAgent.indexOf(IE 6) != -1)
        document.write(<style type="text/css" media="all">@import url('ie6.css');
//]]>
</script>



SSI
<!--#if expr="$HTTP_USER_AGENT=/Windows/" -->
<!--#set var="ua" value="Explorer" -->


PHP
<?php
if (strpos($HTTP_USER_AGENT,"Windows") !==false) {
     $ua="Explorer";
     $uaVers = substr($HTTP_USER_AGENT,strpos($HTTP_USER_AGENT,"MSIE")+6);
     }
else {
     $ua=$HTTP_USER_AGENT;
     $uaVers=""; 
     }
?>

Riim 17.09.2009 17:34

navigator.appVersion.match(/MSIE\u0020([.\d]+);/)[1] >= 5.5

e1f 17.09.2009 17:43

(navigator.appVersion.match(/MSIE\u0020([.\d]+);/)||[])[1] >= 5.5

А то в не-ИЕ будет TypeError: ... is null

Riim 17.09.2009 17:49

e1f,
определяем версию браузера, а не браузер, браузер, понятное дело, уже определен, раз речь зашла о его версии.

Octane 17.09.2009 17:49

Conditional Compilation!
var ie /*@cc_on = ScriptEngineMinorVersion() @*/;

верно для IE5.5—8

Koc 25.09.2009 17:37

объясните, почему jQuery.browser является deprecated?

Gvozd 25.09.2009 17:58

Цитата:

Сообщение от Koc
объясните, почему jQuery.browser является deprecated?

Наврено потому, что разработчики jQuery тоже считают:
Цитата:

Сообщение от Gvozd
глупость.
надо определять не версию браузера, а что он умеет делать


pashak 08.04.2010 21:20

Кроме userAgent
 
К сожалению, window.navigator.userAgent не даёт достаточно сведений о браузере. Например, те же Opera и Safari имеют функции подмены юзерагента и сайты, базированные на юзерагенте, неправильно определяют, какой на самом деле браузер перед ними.
Точное определение версии может понадобиться, например, при ограничении доступа определенных браузеров к сайту, например, Opera не обрабатывает нажатие правой кнопки мыши, что является очень большим минусом и т.п.
Итак, проведя некоторые исследования, я смог обнаружить "метки", отличные от userAgent, в браузерах, которые определенно показывают версию.

Opera:
window.opera - точно указывает на то, что браузер - Opera
window.opera.version() - возвращает версию Opera

Chrome:
window.chrome - объект, специфичный для Chrome
window.chromium - характерен для браузеров на движке Chromium
Стоит отметить, что он, как и Safari базирован на WebKit и в его userAgent дополнительно пишется Safari.

Safari:
window.navigator.vendor="Apple Computer, Inc." - всегда так, не в зависимости, на какой юзерагент эмулируется. К сожалению, будет недостаточно для определения, мобильный ли это браузер.

IE:
Общеизвестные условные комментарии, система событий, currentStyle и многое другое.

Mozilla:
window.mozInnerScreenX и другие расширяющие moz-свойства

Другие браузеры менее распространены, поэтому я не занимался их изучением.
Если есть неточность, поправьте меня ;)

P.S. Определять версию совсем не глупость. Старые версии могут уметь делать "что-либо" но с глюками, а, определив версию, можно учитывать это обстоятельство.

Gvozd 08.04.2010 23:42

Цитата:

Сообщение от pashak
Определять версию совсем не глупость. Старые версии могут уметь делать "что-либо" но с глюками, а, определив версию, можно учитывать это обстоятельство.

глупость
а если браузер выдаст какую-то версию о которой тебе ничего неизвестно, что делать?
хато определив возмоджности браузера, вполне можно ожидать какой код отработает в данном случае

Skipp 09.04.2010 09:43

Прям битва знаний=)

Aetae 09.04.2010 18:55

Определение возможностей это прекрасно, но от одного исключения из этого правила никуда не убежать, угадайте какого.))

e1f 09.04.2010 19:05

Aetae, просветите непросветленных :)

onotole404 15.10.2015 13:32

Цитата:

Сообщение от Gvozd
глупость.
надо определять не версию браузера, а что он умеет делать

Нифига не "глупость". Тот же IE 9 заявляет, что он много чего умеет делать. А на самом деле оно там есть, но работает через жопу. Одним feature detection не обойдёшься. Бывают ситуации, когда заявленная возможность в браузере присутствует, но работает с отличиями. В таких случаях просто необходимо иметь возможность определить данный конкретный браузер и его версию.


Часовой пояс GMT +3, время: 13:17.