Как определить версию браузера и операционной системы с помощью JavaScript?
Я попытался использовать приведенный ниже код, но он отображает только результаты в Chrome и Mozilla не работает в IE6.
<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>
выход:
Browser CodeName: Mozilla
Browser Name: Netscape
Browser Version: 5.0 (Windows)
Cookies Enabled: true
Platform: Win32
User-agent header: Mozilla/5.0 (Windows NT 5.1; rv:12.0) Gecko/20100101 Firefox/12.0
мне нужно получить только версию "Firefox / 12.0".
7 ответов:
обнаружение деталей браузера:
var nVer = navigator.appVersion; var nAgt = navigator.userAgent; var browserName = navigator.appName; var fullVersion = ''+parseFloat(navigator.appVersion); var majorVersion = parseInt(navigator.appVersion,10); var nameOffset,verOffset,ix; // In Opera, the true version is after "Opera" or after "Version" if ((verOffset=nAgt.indexOf("Opera"))!=-1) { browserName = "Opera"; fullVersion = nAgt.substring(verOffset+6); if ((verOffset=nAgt.indexOf("Version"))!=-1) fullVersion = nAgt.substring(verOffset+8); } // In MSIE, the true version is after "MSIE" in userAgent else if ((verOffset=nAgt.indexOf("MSIE"))!=-1) { browserName = "Microsoft Internet Explorer"; fullVersion = nAgt.substring(verOffset+5); } // In Chrome, the true version is after "Chrome" else if ((verOffset=nAgt.indexOf("Chrome"))!=-1) { browserName = "Chrome"; fullVersion = nAgt.substring(verOffset+7); } // In Safari, the true version is after "Safari" or after "Version" else if ((verOffset=nAgt.indexOf("Safari"))!=-1) { browserName = "Safari"; fullVersion = nAgt.substring(verOffset+7); if ((verOffset=nAgt.indexOf("Version"))!=-1) fullVersion = nAgt.substring(verOffset+8); } // In Firefox, the true version is after "Firefox" else if ((verOffset=nAgt.indexOf("Firefox"))!=-1) { browserName = "Firefox"; fullVersion = nAgt.substring(verOffset+8); } // In most other browsers, "name/version" is at the end of userAgent else if ( (nameOffset=nAgt.lastIndexOf(' ')+1) < (verOffset=nAgt.lastIndexOf('/')) ) { browserName = nAgt.substring(nameOffset,verOffset); fullVersion = nAgt.substring(verOffset+1); if (browserName.toLowerCase()==browserName.toUpperCase()) { browserName = navigator.appName; } } // trim the fullVersion string at semicolon/space if present if ((ix=fullVersion.indexOf(";"))!=-1) fullVersion=fullVersion.substring(0,ix); if ((ix=fullVersion.indexOf(" "))!=-1) fullVersion=fullVersion.substring(0,ix); majorVersion = parseInt(''+fullVersion,10); if (isNaN(majorVersion)) { fullVersion = ''+parseFloat(navigator.appVersion); majorVersion = parseInt(navigator.appVersion,10); } document.write('' +'Browser name = '+browserName+'<br>' +'Full version = '+fullVersion+'<br>' +'Major version = '+majorVersion+'<br>' +'navigator.appName = '+navigator.appName+'<br>' +'navigator.userAgent = '+navigator.userAgent+'<br>' )
источник JavaScript: имя браузера.
см JSFiddle для обнаружения деталей браузера.обнаружение ОС:
// This script sets OSName variable as follows: // "Windows" for all versions of Windows // "MacOS" for all versions of Macintosh OS // "Linux" for all versions of Linux // "UNIX" for all other UNIX flavors // "Unknown OS" indicates failure to detect the OS var OSName="Unknown OS"; if (navigator.appVersion.indexOf("Win")!=-1) OSName="Windows"; if (navigator.appVersion.indexOf("Mac")!=-1) OSName="MacOS"; if (navigator.appVersion.indexOf("X11")!=-1) OSName="UNIX"; if (navigator.appVersion.indexOf("Linux")!=-1) OSName="Linux"; document.write('Your OS: '+OSName);
источник JavaScript: обнаружение ОС.
см JSFiddle для обнаружения деталей ОС.var nVer = navigator.appVersion; var nAgt = navigator.userAgent; var browserName = navigator.appName; var fullVersion = ''+parseFloat(navigator.appVersion); var majorVersion = parseInt(navigator.appVersion,10); var nameOffset,verOffset,ix; // In Opera, the true version is after "Opera" or after "Version" if ((verOffset=nAgt.indexOf("Opera"))!=-1) { browserName = "Opera"; fullVersion = nAgt.substring(verOffset+6); if ((verOffset=nAgt.indexOf("Version"))!=-1) fullVersion = nAgt.substring(verOffset+8); } // In MSIE, the true version is after "MSIE" in userAgent else if ((verOffset=nAgt.indexOf("MSIE"))!=-1) { browserName = "Microsoft Internet Explorer"; fullVersion = nAgt.substring(verOffset+5); } // In Chrome, the true version is after "Chrome" else if ((verOffset=nAgt.indexOf("Chrome"))!=-1) { browserName = "Chrome"; fullVersion = nAgt.substring(verOffset+7); } // In Safari, the true version is after "Safari" or after "Version" else if ((verOffset=nAgt.indexOf("Safari"))!=-1) { browserName = "Safari"; fullVersion = nAgt.substring(verOffset+7); if ((verOffset=nAgt.indexOf("Version"))!=-1) fullVersion = nAgt.substring(verOffset+8); } // In Firefox, the true version is after "Firefox" else if ((verOffset=nAgt.indexOf("Firefox"))!=-1) { browserName = "Firefox"; fullVersion = nAgt.substring(verOffset+8); } // In most other browsers, "name/version" is at the end of userAgent else if ( (nameOffset=nAgt.lastIndexOf(' ')+1) < (verOffset=nAgt.lastIndexOf('/')) ) { browserName = nAgt.substring(nameOffset,verOffset); fullVersion = nAgt.substring(verOffset+1); if (browserName.toLowerCase()==browserName.toUpperCase()) { browserName = navigator.appName; } } // trim the fullVersion string at semicolon/space if present if ((ix=fullVersion.indexOf(";"))!=-1) fullVersion=fullVersion.substring(0,ix); if ((ix=fullVersion.indexOf(" "))!=-1) fullVersion=fullVersion.substring(0,ix); majorVersion = parseInt(''+fullVersion,10); if (isNaN(majorVersion)) { fullVersion = ''+parseFloat(navigator.appVersion); majorVersion = parseInt(navigator.appVersion,10); } document.write('' +'Browser name = '+browserName+'<br>' +'Full version = '+fullVersion+'<br>' +'Major version = '+majorVersion+'<br>' +'navigator.appName = '+navigator.appName+'<br>' +'navigator.userAgent = '+navigator.userAgent+'<br>' ) // This script sets OSName variable as follows: // "Windows" for all versions of Windows // "MacOS" for all versions of Macintosh OS // "Linux" for all versions of Linux // "UNIX" for all other UNIX flavors // "Unknown OS" indicates failure to detect the OS var OSName="Unknown OS"; if (navigator.appVersion.indexOf("Win")!=-1) OSName="Windows"; if (navigator.appVersion.indexOf("Mac")!=-1) OSName="MacOS"; if (navigator.appVersion.indexOf("X11")!=-1) OSName="UNIX"; if (navigator.appVersion.indexOf("Linux")!=-1) OSName="Linux"; document.write('Your OS: '+OSName);
мне грустно говорить:нам не повезло в этом.
Я хотел бы направить вас к автору WhichBrowser:Все лгут.
в принципе, ни один браузер не является честным. Независимо от того, используете ли вы Chrome или IE, они оба скажут вам, что они "Mozilla Netscape" с поддержкой Gecko и Safari. Попробуйте сами на любой из скрипок, летающих в этой теме:
или любой другой... Попробуйте его с 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>
хром говорит:
браузер Название: Мозилла
Имя Браузера: Netscape
версия браузера: 5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, как геккон) Chrome/40.0.2214.115 Safari / 537.36
куки включены: true
Платформа: Win32
заголовок User-agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, как Gecko) Chrome / 40.0.2214.115 Safari / 537.36
IE говорит:
Кодовое Имя Браузера: Mozilla
Имя Браузера: Netscape
версия браузера: 5.0 (Windows NT 6.1; WOW64; Trident / 7.0; SLCC2; .NET Среда CLR 2.0.50727; .ЧИСТАЯ СРЕДА CLR 3.5.30729; .Чистая среда CLR 3.0.30729; Медиа-Центр ПК 6.0; .Серии net4.0С; .Серии net4.0Е; в InfoPath.3; rv: 11.0) как геккон
куки включены: true
Платформа: Win32
заголовок User-agent: 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; Медиа Центр PC 6.0; .Серии net4.0С; .Серии net4.0Е; в InfoPath.3; rv: 11.0) нравится Геккон
по крайней мере, Chrome все еще имеет строку, содержащую "Chrome" с точным номером версии. Но, для IE вы должны экстраполировать из вещей, которые он поддерживает, чтобы на самом деле выяснить это (кто еще может похвастаться, что они поддерживают
.NET
илиMedia Center
:P), а затем сопоставьте его сrv:
в самом конце, чтобы получить номер версии. Конечно, даже такие сложные эвристики могут очень вероятно потерпеть неудачу, как только IE 12 (или то, что они хотят назвать его) выходит.
сценарий PPK является авторитетом для такого рода вещей, как сказал @Jalpesh, это может указать вам правильный путь
var wn = window.navigator, platform = wn.platform.toString().toLowerCase(), userAgent = wn.userAgent.toLowerCase(), storedName; // ie if (userAgent.indexOf('msie',0) !== -1) { browserName = 'ie'; os = 'win'; storedName = userAgent.match(/msie[ ]\d{1}/).toString(); version = storedName.replace(/msie[ ]/,''); browserOsVersion = browserName + version; }
для этого есть библиотека:https://github.com/bestiejs/platform.js#readme
затем вы можете использовать его таким образом
// example 1 platform.os; // 'Windows Server 2008 R2 / 7 x64' // example 2 on an iPad platform.os; // 'iOS 5.0' // you can also access on the browser and some other properties platform.name; // 'Safari' platform.version; // '5.1' platform.product; // 'iPad' platform.manufacturer; // 'Apple' platform.layout; // 'WebKit' // or use the description to put all together platform.description; // 'Safari 5.1 on Apple iPad (iOS 5.0)'
для обнаружения операционной системы с помощью JavaScript лучше использовать навигатор.userAgent вместо навигатора.appVersion
{ var OSName = "Unknown OS"; if (navigator.userAgent.indexOf("Win") != -1) OSName = "Windows"; if (navigator.userAgent.indexOf("Mac") != -1) OSName = "Macintosh"; if (navigator.userAgent.indexOf("Linux") != -1) OSName = "Linux"; if (navigator.userAgent.indexOf("Android") != -1) OSName = "Android"; if (navigator.userAgent.indexOf("like Mac") != -1) OSName = "iOS"; console.log('Your OS: ' + OSName); }
попробуйте этот..
// Browser with version Detection navigator.sayswho= (function(){ var N= navigator.appName, ua= navigator.userAgent, tem; var M= ua.match(/(opera|chrome|safari|firefox|msie)\/?\s*(\.?\d+(\.\d+)*)/i); if(M && (tem= ua.match(/version\/([\.\d]+)/i))!= null) M[2]= tem[1]; M= M? [M[1], M[2]]: [N, navigator.appVersion,'-?']; return M; })(); var browser_version = navigator.sayswho; alert("Welcome to " + browser_version);
проверьте рабочую скрипку (здесь)
для Firefox, Chrome, Opera, Internet Explorer и Safari
var ua="Mozilla/1.22 (compatible; MSIE 10.0; Windows 3.1)"; //ua = navigator.userAgent; var b; var browser; if(ua.indexOf("Opera")!=-1) { b=browser="Opera"; } if(ua.indexOf("Firefox")!=-1 && ua.indexOf("Opera")==-1) { b=browser="Firefox"; // Opera may also contains Firefox } if(ua.indexOf("Chrome")!=-1) { b=browser="Chrome"; } if(ua.indexOf("Safari")!=-1 && ua.indexOf("Chrome")==-1) { b=browser="Safari"; // Chrome always contains Safari } if(ua.indexOf("MSIE")!=-1 && (ua.indexOf("Opera")==-1 && ua.indexOf("Trident")==-1)) { b="MSIE"; browser="Internet Explorer"; //user agent with MSIE and Opera or MSIE and Trident may exist. } if(ua.indexOf("Trident")!=-1) { b="Trident"; browser="Internet Explorer"; } // now for version var version=ua.match(b+"[ /]+[0-9]+(.[0-9]+)*")[0]; console.log("broswer",browser); console.log("version",version);