参考自:https://www.jb51.net/article/91081.htm
思路:主要利用navigator.userAgent
主要参考上面的这篇文章,除了里面的点需要主要下面两种浏览器的判读:
Edge:isEdge: agent.indexOf("windows nt 6.1") > -1 && agent.indexOf("trident/7.0;") > -1
360浏览器:利用navigator.mimeTypes,"type=application/vnd.chromium.remoting-viewer"是360特有的mime
给出完整代码:
/**
* 获取浏览器类型以及版本号
* 支持国产浏览器:猎豹浏览器、搜狗浏览器、傲游浏览器、360极速浏览器、360安全浏览器、
* QQ浏览器、百度浏览器等.
* 支持国外浏览器:IE,Firefox,Chrome,safari,Opera等.
* 使用方法:
* 获取浏览器版本:Browser.client.version
* 获取浏览器名称(外壳):Browser.client.name
**/
var Browser=Browser || (function(window){
var document = window.document,
navigator = window.navigator,
agent = navigator.userAgent.toLowerCase(),
//IE8+支持.返回浏览器渲染当前文档所用的模式
//IE6,IE7:undefined.IE8:8(兼容模式返回7).IE9:9(兼容模式返回7||8)
//IE10:10(兼容模式7||8||9)
IEMode = document.documentMode,
//chorme
chrome = window.chrome || false,
System = {
//user-agent
agent : agent,
//是否为IE
isIE : /msie/.test(agent),
//是否为Edge
isEdge: agent.indexOf("windows nt 6.1") > -1 && agent.indexOf("trident/7.0;") > -1, //判断是否IE的Edge浏览器
//Gecko内核
isGecko: agent.indexOf("gecko")>0 && agent.indexOf("like gecko")<0,
//webkit内核
isWebkit: agent.indexOf("webkit")>0,
//是否为标准模式
isStrict: document.compatMode === "CSS1Compat",
//是否支持subtitle
supportSubTitle:function(){
return "track" in document.createElement("track");
},
//是否支持scoped
supportScope:function(){
return "scoped" in document.createElement("style");
},
//获取IE的版本号
ieVersion:function(){
try {
return agent.match(/msie ([\d.]+)/)[1] || 0;
} catch(e) {
console.log("error");
return IEMode;
}
},
//Opera版本号
operaVersion:function(){
try {
if(window.opera) {
return agent.match(/opera.([\d.]+)/)[1];
} else if(agent.indexOf("opr") > 0) {
return agent.match(/opr\/([\d.]+)/)[1];
}
} catch(e) {
console.log("error");
return 0;
}
},
//描述:version过滤.如31.0.252.152 只保留31.0
versionFilter:function(){
if(arguments.length === 1 && typeof arguments[0] === "string") {
var version = arguments[0];
start = version.indexOf(".");
if(start>0){
end = version.indexOf(".",start+1);
if(end !== -1) {
return version.substr(0,end);
}
}
return version;
} else if(arguments.length === 1) {
return arguments[0];
}
return 0;
},
//检测mime
_mime:function(option, value) {
var mimeTypes = navigator.mimeTypes;
for (var mt in mimeTypes) {
if (mimeTypes[mt][option] == value) {
return true;
}
}
return false;
},
/**
* 检测是否是360
* 360使用的chrome内核
*/
is360:function() {
var _is360 = System._mime("type", "application/vnd.chromium.remoting-viewer"); //360特有mime
if (_is360) {
return true;
}
}
};
try {
//浏览器类型(IE、Opera、Chrome、Safari、Firefox)
System.type = System.isIE?"IE":
System.isEdge? "Edge":
window.opera || (agent.indexOf("opr") > 0)?"Opera":
(agent.indexOf("chrome")>0)?"Chrome":
//safari也提供了专门的判定方式
window.openDatabase?"Safari":
(agent.indexOf("firefox")>0)?"Firefox":
'unknow';
//版本号
System.version = (System.type === "IE")?System.ieVersion():
(System.type === "Firefox")?agent.match(/firefox\/([\d.]+)/)[1]:
(System.type === "Chrome")?agent.match(/chrome\/([\d.]+)/)[1]:
(System.type === "Opera")?System.operaVersion():
(System.type === "Safari")?agent.match(/version\/([\d.]+)/)[1]:
"0";
//浏览器外壳
System.shell=function(){
//遨游浏览器
if(agent.indexOf("maxthon") > 0) {
System.version = agent.match(/maxthon\/([\d.]+)/)[1] || System.version ;
return "傲游浏览器";
}
//QQ浏览器
if(agent.indexOf("qqbrowser") > 0) {
System.version = agent.match(/qqbrowser\/([\d.]+)/)[1] || System.version ;
return "QQ浏览器";
}
//搜狗浏览器
if( agent.indexOf("se 2.x")>0) {
return '搜狗浏览器';
}
//Chrome:也可以使用window.chrome && window.chrome.webstore判断
if(chrome && System.type !== "Opera") {
var external = window.external,
clientInfo = window.clientInformation,
//客户端语言:zh-cn,zh.360下面会返回undefined
clientLanguage = clientInfo.languages;
debugger;
//猎豹浏览器:或者agent.indexOf("lbbrowser")>0
if( external && 'LiebaoGetVersion' in external) {
return '猎豹浏览器';
}
//百度浏览器
if (agent.indexOf("bidubrowser")>0) {
System.version = agent.match(/bidubrowser\/([\d.]+)/)[1] ||
agent.match(/chrome\/([\d.]+)/)[1];
return "百度浏览器";
}
if(System.is360()) {
return '360极速浏览器';
}
return "Chrome";
}
return System.type;
};
//浏览器名称(如果是壳浏览器,则返回壳名称)
System.name = System.shell();
//对版本号进行过滤过处理
System.version = System.versionFilter(System.version);
} catch(e) {
console.log("error");
}
return {
client:System
};
})(window);
alert(Browser.client.name+" "+Browser.client.version);
相关推荐
在JavaScript中,检测浏览器类型是常见的需求,这有助于开发者针对不同浏览器实现特定的功能或优化。以下将详细讲解如何使用JavaScript来识别用户所使用的浏览器类型。 首先,JavaScript提供了`navigator`对象,它...
### 知识点一:JavaScript检测浏览器类型与版本 ...综上所述,虽然通过JavaScript检测浏览器类型及版本是一种常见的做法,但在实际应用中还需要考虑到其局限性,并采取适当的优化措施以提高兼容性和安全性。
1. JS 通过分析 userAgent 属性来推断浏览器的类型及版本 2. JavaScript 推断当前浏览器类型,推断 IE 浏览器方法 3. JavaScript 检测浏览器类型和版本的代码 4. js/jquery 推断浏览器类型的方法 获取浏览器类型和...
2. **检测浏览器类型** 通过分析`userAgent`字符串,我们可以识别出浏览器的类型。例如,检测是否为IE,可以使用以下代码: ```javascript function isIE() { return /MSIE|Trident/.test(navigator.userAgent);...
### JavaScript 判断浏览器类型及版本的方法 在网页开发过程中,有时候我们需要根据用户的浏览器类型和版本来执行特定的代码逻辑或调整界面布局。这是因为不同的浏览器在处理某些特性时可能存在差异,例如对新标准...
### 知识点一:JavaScript检测浏览器类型及版本 在Web开发中,有时我们需要根据用户使用的浏览器类型或版本来执行不同的脚本或显示特定的信息。这是因为不同浏览器对Web标准的支持程度可能有所不同,甚至同一浏览器...
在jQuery 1.9版本中,官方移除了`$.browser`对象,这个对象曾经是用于检测浏览器类型和版本的便捷方式。然而,这并不意味着我们无法再进行此类检测。今天我们将探讨一种新的方法,特别是在jQuery 1.9及更高版本中,...
### JavaScript检测浏览器类型和版本的方法 #### 一、概述 在Web开发中,有时需要根据用户的浏览器类型或版本来提供不同的功能或体验。这可以通过多种方式实现,其中两种常用的方法为**对象/特征检测法**与**User-...
在IT领域,特别是前端开发中,能够准确地识别和判断用户使用的浏览器类型及版本是一项重要的技能。这不仅能帮助开发者针对性地优化网站性能,还能确保在不同浏览器上提供一致的用户体验。下面,我们将深入探讨如何...
JavaScript提供了许多内置对象和方法,可以用来检测浏览器类型。以下是一些常用的JavaScript代码片段: 1. 利用`navigator.userAgent`属性: ```javascript var userAgent = navigator.userAgent; if (userAgent....
在JavaScript中,我们经常需要检测用户的浏览器类型及版本,以便为不同的浏览器提供兼容性的解决方案或者优化用户体验。这可以通过检查navigator对象的各种属性来实现。navigator对象是浏览器提供的一个全局对象,...
下面是一个简单的函数`getBrowserVersion.js`,用于检测浏览器类型及版本号: ```javascript function getBrowserVersion() { var userAgent = navigator.userAgent; var browser = {}; if (userAgent.indexOf...
以下是一段简单的JavaScript代码,用于检测常见的浏览器类型: ```javascript function getBrowserType() { var userAgent = navigator.userAgent; if (userAgent.indexOf("Firefox") > -1) { return "Firefox...
"jQuery判断浏览器版本及鉴别浏览器类型代码.rar"这个压缩包包含了用于检测浏览器类型和版本的jQuery代码,帮助开发者创建更加兼容和用户体验良好的网站。 首先,让我们了解一下如何通过jQuery来获取浏览器的信息:...
本文将详细探讨在jQuery 1.9版本中如何检测浏览器类型和版本,以及如何在新版本中替代被剔除的$.browser对象。 在jQuery 1.9版本之前,开发者可以使用jQuery内置的$.browser对象来检测浏览器类型。$.browser对象...
在实际开发中,通常会编写JavaScript函数来综合这些特性进行判断,以确定浏览器类型和版本。例如,可以创建一个函数,检查window对象上的特定属性或方法,然后解析userAgent字符串以获取版本号。这种方法可以帮助...
在jQuery中,有一个内置的`jQuery.browser`对象用于检测浏览器类型及版本。其具体实现原理如下: ```javascript var userAgent = navigator.userAgent.toLowerCase(); // 定义浏览器信息 jQuery.browser = { ...
在前端开发中,了解和识别访问网站的浏览器类型及版本信息是十分关键的。由于不同的浏览器对CSS和JavaScript的支持程度存在差异性,为了能够兼容不同的浏览器,并且能够提供最佳的用户体验,我们需要检测并确认用户...
本文将介绍如何使用Javascript来检测浏览器的类型以及版本号,包括猎豹浏览器、搜狗浏览器、傲游浏览器、360极速浏览器、360安全浏览器、QQ浏览器、百度...JavaScript判断浏览器类型及版本</title> [removed]