javascript瀏覽器檢測,javascript瀏覽器
瀏覽器核心:
瀏覽器最核心部分稱之為"Rendering Engine",又稱“渲染引擎”,我們通常叫瀏覽器核心。
瀏覽器核心決定了瀏覽器如何顯示網頁的內容以及頁面的格式資訊。
核心分類:
1、Trident(IE核心):使用IE核心的瀏覽器有IE6/IE7/IE8(Trident 4.0). IE9(Trident 5.0). IE10(Trident 10.0)。當然像國內的很多瀏覽器使用了IE核心但是並非IE瀏覽器(殼瀏覽器)。如:360安全瀏覽器(1.0-5.0使用Trident),6.0使用Trident+WebKit,7.0使用Trident+Blink;獵豹瀏覽器,遨遊瀏覽器,搜狗高速瀏覽器等。
有很多瀏覽器現在稱作為“雙核”或“多核”,其中一個核心使用Trident,後增加另外一個核心,國內稱之為“高速瀏覽器模式”。Trident則用來做相容模式。
2、Gekco(Firefox核心):Firefox瀏覽器等。
3、Presto(Opera早期版本):現在已經廢棄。
4、Webkit(Safari核心,Chrome核心):蘋果公司的核心,也是蘋果的Safari瀏覽器核心,如Chrome、Safari、360極速瀏覽器以及搜狗瀏覽器高速模式中使用了該核心。
5、Blink:是Google和Opera software開發的瀏覽器排版引擎,在Chrome的28版本之後使用、Opera 15版本後使用。
排版引擎:
1、Webcore:蘋果公司研發,使用Webcore的主要瀏覽器是Safari。
2、KHTML。
javascript擷取用戶端資訊:
navigator包含了瀏覽器的資訊。
對象屬性(列舉比較常用的幾個):
1、appVersion:返回瀏覽器的平台和版本資訊。
2、platform:返回運行瀏覽器的操作平台的名稱。
3、userAgent:返回由客戶機發送伺服器的user-agent頭部的值。
各個瀏覽器userAgent展示:
Firefox:gecko為使用核心,後面為版本號碼20100101。也可通過後面的firefox判定是否為Firefox瀏覽器,版本號碼為35.0。
Opera:版本不同,可能結果不同:
IE9.0:可以通過msie判定是否為IE瀏覽器。
Chrome:
Safari:
國內瀏覽器支援不完善:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312" /><title>無標題文檔</title></head><body></body><script type="text/javascript">/** * 擷取瀏覽器類型以及版本號碼 * 支援國產瀏覽器:獵豹瀏覽器、搜狗瀏覽器、傲遊瀏覽器、360極速瀏覽器、360安全瀏覽器、 * QQ瀏覽器、百度瀏覽器等. * 支援國外瀏覽器:IE,Firefox,Chrome,safari,Opera等. * 使用方法: * 擷取瀏覽器版本:Browser.client.version * 擷取瀏覽器名稱(外殼):Browser.client.name * @author:xuzengqiang * @since :2015-1-27 10:26:11**/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,//chormechrome = window.chrome || false,System = {//user-agentagent : agent,//是否為IEisIE : /msie/.test(agent),//Gecko核心isGecko: agent.indexOf("gecko")>0 && agent.indexOf("like gecko")<0,//webkit核心isWebkit: agent.indexOf("webkit")>0,//是否為標準模式isStrict: document.compatMode === "CSS1Compat",//是否支援subtitlesupportSubTitle:function(){return "track" in document.createElement("track");},//是否支援scopedsupportScope: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.0versionFilter: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;}};try {//瀏覽器類型(IE、Opera、Chrome、Safari、Firefox)System.type = System.isIE?"IE":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下面會返回undefinedclientLanguage = clientInfo.languages;//獵豹瀏覽器:或者agent.indexOf("lbbrowser")>0if( external && 'LiebaoGetVersion' in external) { return '獵豹瀏覽器';}//百度瀏覽器if (agent.indexOf("bidubrowser")>0) {System.version = agent.match(/bidubrowser\/([\d.]+)/)[1] || agent.match(/chrome\/([\d.]+)/)[1];return "百度瀏覽器";}//360極速瀏覽器和360安全瀏覽器if( System.supportSubTitle() && typeof clientLanguage === "undefined") {//object.key()返回一個數組.包含可枚舉屬性和方法名稱var storeKeyLen = Object.keys(chrome.webstore).length,v8Locale = "v8Locale" in window;return storeKeyLen > 1? '360極速瀏覽器':'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);</script></html>