Мені сумно сказати: Нам цього не пощастило.
Я хотів би віднести вас до автора WhichBrowser : Усі брешуть .
В основному, жоден браузер не є чесним. Незалежно від того, використовуєте ви Chrome чи IE, вони обидва скажуть вам, що вони "Mozilla Netscape" із підтримкою Gecko та Safari. Спробуйте самостійно будь-яку із загадок, що летять навколо у цій темі:
скрипка hims056
Гарихаранська скрипка
або будь-який інший ... Спробуйте це з Chrome (який може все-таки досягти успіху), потім спробуйте його з останньою версією IE, і ви заплачете. Звичайно, є евристика, щоб все було в порядку, але буде важко зрозуміти всі крайові справи, і вони, швидше за все, не працюватимуть вже через рік.
Візьміть свій код, наприклад:
<div id="example"></div>
<script type="text/javascript">
txt = "<p>Browser CodeName: " + navigator.appCodeName + "</p>";
txt+= "<p>Browser Name: " + navigator.appName + "</p>";
txt+= "<p>Browser Version: " + navigator.appVersion + "</p>";
txt+= "<p>Cookies Enabled: " + navigator.cookieEnabled + "</p>";
txt+= "<p>Platform: " + navigator.platform + "</p>";
txt+= "<p>User-agent header: " + navigator.userAgent + "</p>";
document.getElementById("example").innerHTML=txt;
</script>
Chrome каже:
CodeName браузера: Mozilla
Назва браузера: Netscape
Версія браузера: 5.0 (Windows NT 6.1; WOW64) AppleWebKit / 537.36 (KHTML, як і Gecko) Chrome / 40.0.2214.115 Safari / 537.36
Файли cookie увімкнено: вірно
Платформа: Win32
Заголовок користувача-агента: Mozilla / 5.0 (Windows NT 6.1; WOW64) AppleWebKit / 537.36 (KHTML, як і Gecko) Chrome / 40.0.2214.115 Safari / 537.36
IE каже:
CodeName браузера: Mozilla
Назва браузера: Netscape
Версія браузера: 5.0 (Windows NT 6.1; WOW64; Trident / 7.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4 .0E; InfoPath.3; rv: 11.0) як Gecko
Файли cookie увімкнено: вірно
Платформа: Win32
Заголовок користувача-агента: Mozilla / 5.0 (Windows NT 6.1; WOW64; Trident / 7.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4. 0C; .NET4.0E; InfoPath.3; rv: 11.0), як Gecko
Принаймні у Chrome все ще є рядок, що містить "Chrome" з точним номером версії. Але для IE ви повинні екстраполювати з речей, які він підтримує, щоб насправді розібратися (хто ще похвалиться, що вони підтримують .NET
або Media Center
: P), а потім зіставити його з rv:
самим кінцем, щоб отримати номер версії. Звичайно, навіть така складна евристика може, швидше за все, вийти з ладу, як тільки з'явиться IE 12 (або як вони цього хочуть назвати).