A. Cedano Asked: 2020-09-09 09:29:58 +0800 CST 2020-09-09 09:29:58 +0800 CST 2020-09-09 09:29:58 +0800 CST 使用 Javascript 获取浏览器名称和版本 772 我想编写一些跨浏览器的函数,为此我需要通过函数知道客户端上浏览器的名称和当前版本,用纯 Javascript 实现它的最佳方法是什么? javascript 3 Answers Voted Best Answer gugadev 2020-09-09T10:06:21+08:002020-09-09T10:06:21+08:00 最准确的是解析头部UserAgent;其中包含浏览器、版本和操作系统等数据。 在此响应中,用户使用正则表达式来获取浏览器和版本: var getBrowserInfo = function() { var ua= navigator.userAgent, tem, M= ua.match(/(opera|chrome|safari|firefox|msie|trident(?=\/))\/?\s*(\d+)/i) || []; if(/trident/i.test(M[1])){ tem= /\brv[ :]+(\d+)/g.exec(ua) || []; return 'IE '+(tem[1] || ''); } if(M[1]=== 'Chrome'){ tem= ua.match(/\b(OPR|Edge)\/(\d+)/); if(tem!= null) return tem.slice(1).join(' ').replace('OPR', 'Opera'); } M= M[2]? [M[1], M[2]]: [navigator.appName, navigator.appVersion, '-?']; if((tem= ua.match(/version\/(\d+)/i))!= null) M.splice(1, 1, tem[1]); return M.join(' '); }; console.log(getBrowserInfo()); 另一种选择是使用bowser包: console.log(bowser.name, bowser.version); <script src="https://cdnjs.cloudflare.com/ajax/libs/bowser/1.9.4/bowser.min.js"></script> Damian 2020-09-09T09:40:27+08:002020-09-09T09:40:27+08:00 var txt = ""; 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>Browser Language: " + navigator.language + "</p>"; txt += "<p>Browser Online: " + navigator.onLine + "</p>"; txt += "<p>Platform: " + navigator.platform + "</p>"; txt += "<p>User-agent header: " + navigator.userAgent + "</p>"; document.getElementById("demo").innerHTML = txt; <!DOCTYPE html> <html> <body> <div id="demo"></div> </body> </html> Denisse CG 2022-03-28T12:31:53+08:002022-03-28T12:31:53+08:00 第一个答案仍然正确,但是对于 Edge,您必须将其更改Edge为Edg: var getBrowserInfo = function() { var ua= navigator.userAgent, tem, M= ua.match(/(opera|chrome|safari|firefox|msie|trident(?=\/))\/?\s*(\d+)/i) || []; if(/trident/i.test(M[1])){ tem= /\brv[ :]+(\d+)/g.exec(ua) || []; return 'IE '+(tem[1] || ''); } if(M[1]=== 'Chrome'){ tem= ua.match(/\b(OPR|Edg)\/(\d+)/); if(tem!= null) return tem.slice(1).join(' ').replace('OPR', 'Opera'); } M= M[2]? [M[1], M[2]]: [navigator.appName, navigator.appVersion, '-?']; if((tem= ua.match(/version\/(\d+)/i))!= null) M.splice(1, 1, tem[1]); return M.join(' '); };
最准确的是解析头部
UserAgent
;其中包含浏览器、版本和操作系统等数据。在此响应中,用户使用正则表达式来获取浏览器和版本:
另一种选择是使用bowser包:
第一个答案仍然正确,但是对于 Edge,您必须将其更改
Edge
为Edg
: