Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 21.03.2012, 17:04
Профессор
Отправить личное сообщение для lamer Посмотреть профиль Найти все сообщения от lamer
 
Регистрация: 08.02.2012
Сообщений: 216

Проблема с определением userAgent
Здравствуйте, есть скрипт который определяет браузер и исходя из этого выдает алерт.

<html>

<head>

</head>

<body>
<script>
 if (navigator.userAgent.toLowerCase().indexOf('msie') != -1 && navigator.userAgent.toLowerCase().indexOf('opera') == -1 && navigator.userAgent.toLowerCase().indexOf('webtv') == -1) {
   alert('IE');
 }
 if (navigator.userAgent.toLowerCase().indexOf('gecko') != -1) {
   alert('FF');
 }
</script>
</body>

</html>


Проблема в том что и в FireFox и в Chrome есть gecko.
В итоге при запуске в Chrome вылетает алерт alert('FF');

Кто сталкивался, как бороться ?
Ответить с цитированием
  #2 (permalink)  
Старый 21.03.2012, 17:22
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

Определение типа браузера и версии, по возможностям браузера/движка
Ответить с цитированием
  #3 (permalink)  
Старый 21.03.2012, 18:24
Профессор
Отправить личное сообщение для lamer Посмотреть профиль Найти все сообщения от lamer
 
Регистрация: 08.02.2012
Сообщений: 216

Сообщение от dmitriymar Посмотреть сообщение
Определение типа браузера и версии, по возможностям браузера/движка
Спасибо, но у меня что то Оперу не определяет.

<html>

<head>

</head>

<body>
<script>
window.onload = function() {
hasIE = /*@cc_on true; @*/false;
if (hasIE > 0) {alert('IE'); return false}
hasOpera = !!window.opera;
if (hasOpera > 0) {alert('Opera'); return false}
hasChrome = !!window.chrome;
if (hasChrome > 0) {alert('Chrome'); return false}
hasFireFox = !!window.sidebar;
if (hasFireFox > 0) {alert('FireFox'); return false}
hasSafari = !window.external && !hasOpera;
if (hasSafari > 0) {alert('Safari'); return false}
}
</script>
</body>

</html>


Может я не правильно проверку сделал ?
Ответить с цитированием
  #4 (permalink)  
Старый 21.03.2012, 18:48
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Сообщение от lamer
Может я не правильно проверку сделал ?
браузер нужно определять не по версиям и типу, а по его возможностям. Не забывайте о том что браузеры обновляются и то чего в них нет сейчас может появиться в новой версии.
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #5 (permalink)  
Старый 21.03.2012, 19:17
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

Сообщение от lamer
Может я не правильно проверку сделал ?
определяет оперу
Ответить с цитированием
  #6 (permalink)  
Старый 21.03.2012, 19:38
Профессор
Отправить личное сообщение для lamer Посмотреть профиль Найти все сообщения от lamer
 
Регистрация: 08.02.2012
Сообщений: 216

Сообщение от devote Посмотреть сообщение
браузер нужно определять не по версиям и типу, а по его возможностям. Не забывайте о том что браузеры обновляются и то чего в них нет сейчас может появиться в новой версии.
Скажите в двух словах как вы нашли эти возможности в браузерах ?
Может какая то хитрость есть или ещё что то, сорри если глупый вопрос задаю, я не пока не очень силен в JS.

Сообщение от dmitriymar Посмотреть сообщение
определяет оперу
Да действительно, видимо не тот файл загрузил.
Ответить с цитированием
  #7 (permalink)  
Старый 21.03.2012, 20:34
Профессор
Отправить личное сообщение для lamer Посмотреть профиль Найти все сообщения от lamer
 
Регистрация: 08.02.2012
Сообщений: 216

Столкнулся с непоняткой в IE, вот код:
<html>

<head>

</head>

<body>
<script>
hasIE = /*@cc_on true; @*/false;
if (hasIE > 0) {alert('IE');}
hasFireFox = !!window.sidebar;
if (hasFireFox > 0) {alert('FF');}
else {alert('other');}
</script>
</body>

</html>


Нужно чтоб на всех остальных браузеров кроме IE/FF скрипт выдавал alert('other');
Он же в IE работает не понятно, сперва выдает alert('IE'); а затем alert('other');
В чем может быть проблема ? Это что особенность IE ?
Ответить с цитированием
  #8 (permalink)  
Старый 21.03.2012, 20:48
Аватар для T-sh
Профессор
Отправить личное сообщение для T-sh Посмотреть профиль Найти все сообщения от T-sh
 
Регистрация: 04.12.2009
Сообщений: 579

Сообщение от lamer Посмотреть сообщение
Столкнулся с непоняткой в IE, вот код:
<html>

<head>

</head>

<body>
<script>
hasIE = /*@cc_on true; @*/false;
if (hasIE > 0) {alert('IE');}
hasFireFox = !!window.sidebar;
if (hasFireFox > 0) {alert('FF');}
else {alert('other');}
</script>
</body>

</html>


Нужно чтоб на всех остальных браузеров кроме IE/FF скрипт выдавал alert('other');
Он же в IE работает не понятно, сперва выдает alert('IE'); а затем alert('other');
В чем может быть проблема ? Это что особенность IE ?
правильно и выдает у вас два условных блока:

1. if (hasIE > 0) {alert('IE');}

который выполняется и IE и исполнение скрипта проходит дальше, где второй блок:

2. if (hasFireFox > 0) {alert('FF');}
else {alert('other');}

и он тоже исполняется

используйте else if
__________________
С моих слов записано верно.
Ответить с цитированием
  #9 (permalink)  
Старый 21.03.2012, 21:00
Профессор
Отправить личное сообщение для lamer Посмотреть профиль Найти все сообщения от lamer
 
Регистрация: 08.02.2012
Сообщений: 216

T-sh, не совсем понял что вы имеете введу, как использовать "else if" ? Можно пример ?

Но то что вы писали про условные блоки натолкнуло на мысль сделать так:

<html>

<head>

</head>

<body>
<script>
window.onload = function() {
hasIE = /*@cc_on true; @*/false;
if (hasIE > 0) {alert('IE'); return false}
hasFireFox = !!window.sidebar;
if (hasFireFox > 0) {alert('FF'); return false}
else {alert('other');}
}
</script>
</body>

</html>


Это правильно написано с точки зрения синтаксиса ?
Или лучше не переписать так как вы говорили используя "else if" ?
Ответить с цитированием
  #10 (permalink)  
Старый 21.03.2012, 21:07
Аватар для T-sh
Профессор
Отправить личное сообщение для T-sh Посмотреть профиль Найти все сообщения от T-sh
 
Регистрация: 04.12.2009
Сообщений: 579

<script>
hasIE = /*@cc_on true; @*/false;
hasFireFox = !!window.sidebar;
if (hasIE > 0) {
              alert('IE');
}
else { 
        if (hasFireFox > 0) {
             alert('FF');
         }
        else {
             alert('other');
        }
}
</script>
__________________
С моих слов записано верно.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с функцией Hyjak Общие вопросы Javascript 0 21.06.2010 14:30
Проблема с Popup окном vovuslik jQuery 5 12.06.2010 16:12
Проблема с CSS COKOJIOB (X)HTML/CSS 5 04.08.2009 14:19
Проблема, в менюшке Большой джо Элементы интерфейса 0 12.07.2009 17:12
Проблема спама lliberty AJAX и COMET 1 12.03.2009 16:47