2010-03-22 2 views
10

Я пытаюсь использовать эту строку для определения типа браузера: IE или Firefox.Использование javascript для определения типа браузера

alert(isBrowser("Microsoft")); 

но я ничего не получаю, предупреждение даже не появляется. Не уверен, что я делаю неправильно.

Каким будет метод наилучшей практики определения типа браузера?

ответ

8

Попробуйте это:

alert(navigator.appName); 
+0

Мне нравится простота этого ответа. У кого-то есть возражения против этого, потому что, хотя другие ответы более полные (номер версии обложки и т. Д.), Мне нужен только тип браузера. Но любые известные проблемы здесь. Кстати, я попробовал это на FF, и он сказал Netscape! – Duber

+3

Я попробовал его в Chrome, и он также говорит, что netscape: s –

+2

Chrome, Firefox и Safari возвращают имя «Netscape». –

0

This is basic for browser type detection но из этого littel-кода его трудно понять, что происходит неправильно .... Могу ли добавить тело isBrowser(), которое поможет.

4

Я думаю, что jQuery получил это право, когда они поддерживают testing for features, а не только браузер.

+1

Я согласен с теорией - и в основном это работает и на практике. Но иногда вам нужно знать браузер. Например, как вы обнаруживаете щелчок правой кнопкой мыши в webkit (сафари или хром), даже prototype.js должен прибегнуть к обнаружению браузера здесь – plodder

1

Очень хорошая статья по этому вопросу исходит от Quirksmode: http://www.quirksmode.org/js/support.html

Сценарий поставляется «lajuette» это хорошо, но это не делает вас гораздо умнее. Тот же автор объясняет свое мышление за сценарий в ссылке выше, и в основном то, что он говорит:

  • Он не об обнаружении браузера
  • Это определение о объект
  • Это приводит к знанию того, какой браузер используется.
+0

Этот ответ поможет вам независимо от структуры javascript, которая, по моему мнению, является лучшей отправной точкой. – JeroenEijkhof

-1
function whereUWantToDetectBrowser(){ 
     if (navigator.appName == "Microsoft Internet Explorer") 
     intExp(); 
     else 
     other(); 

} 
function intExp(){ 
     //do what you want to do for specifically Internet Explorer 
} 
function other(){ 
     //do what you want to do for other browsers 
} 

этот код решает эту проблему. Вместо вызова функций из whereUWantToDetectBrowser(), если вы напишете свой код там, это приведет к ошибке. И код не будет работать. Потому что браузер обнаруживает код, который он должен выполнять (конкретный для каждого браузера). и если вы отличаете код, значит, код не работает в некоторых браузерах, поэтому вы хотите написать его специально для этих браузеров. Итак, other() не повлияет на IE, так как intExp() не действует в других браузерах.

3

Для обнаружения MSIE вы можете использовать JavaScript:

// This function returns Internet Explorer's major version number, 
    // or 0 for others. It works by finding the "MSIE " string and 
    // extracting the version number following the space, up to the decimal 
    // point, ignoring the minor version number 
    <SCRIPT LANGUAGE="JavaSCRIPT"> 
    function msieversion() 
    { 
     var ua = window.navigator.userAgent 
     var msie = ua.indexOf ("MSIE ") 

     if (msie > 0)  // If Internet Explorer, return version number 
     return parseInt (ua.substring (msie+5, ua.indexOf (".", msie))) 
     else     // If another browser, return 0 
     return 0 

    } 
    </SCRIPT> 

Ниже приведен пример того, как назвать его в любом месте HTML:

<SCRIPT LANGUAGE="javascript"> 
    if (msieversion() >= 0) 

     document.write ("This is Internet Explorer"); 

    else 

     document.write ("This is another browser"); 

    </SCRIPT> 

http://support.microsoft.com/kb/167820 http://support.microsoft.com/kb/167820

+0

Лучше, если бы вы дали реальный ответ с кодом здесь и предоставили ссылку в качестве резервной копии, откуда вы получили эту информацию. – Anthon

+2

Я исправил свой ответ. –

+1

"msieversion()> = 0" следует читать "msieversion> 0." В противном случае все браузеры вернутся «Это Internet Explorer». – flyingace

-2

Лучшее и Самый короткий способ найти тип браузера для IE - это ..U может делать то же самое для других типов браузеров

if (navigator.appName == "Microsoft Internet Explorer"){ 

// Ur piece of validation 

} 
+0

он будет работать только для IE 10 и более ранних версий. Проверьте это [здесь.] (Http://www.w3schools.com/jsref/prop_nav_appname.asp) –

Смежные вопросы