/* ** jquery.browser.js -- jQuery plugin for enhanced browser detection ** Copyright (c) 2007 Ralf S. Engelschall ** Licensed under GPL ** ** $LastChangedDate$ ** $LastChangedRevision$ */ /* * Engine: Gecko IE Opera WebKit/KHTML OmniWeb CAB * ------------------------------------------------------------------ * Product: Firefox IE 7.0 Opera Safari OmniWeb iCab * SeaMonkey IE 6.0 Konqueror * Camino * ------------------------------------------------------------------ * System: Windows Windows Windows MacOSX MacOSX MacOSX * Unix Unix Unix * MacOSX */ (function($) { /* the jQuery internal variables holding the browser information */ $.browser.product$ = "NN"; /* product */ $.browser.version$ = 0.0; /* version */ $.browser.engine$ = "NN"; /* underlying rendering engine */ $.browser.system$ = "NN"; /* underlying operating system */ /* the browser determination specification data structure */ $.browser.product_spec$ = [ { /* OmniGroup OmniWeb */ Name: [ navigator.userAgent, "(OmniWeb)" ], Version: [ navigator.appVersion, "OmniWeb/(\d+\.\d+)" ], Engine: "OmniWeb" }, { /* Apple Safari */ Name: [ navigator.vendor, "AppleWebKit", "Safari" ], Version: [ navigator.appVersion, "Safari/(\d+\.\d+)" ], Engine: "KHTML/WebKit" }, { /* Opera */ Name: [ window.opera, null, "Opera" ], Version: [ navigator.appVersion, "Opera\s+(\d+\.\d+)" ], Engine: "Opera" }, { /* iCab */ Name: [ navigator.vendor, "(iCab)" ], Version: [ navigator.appVersion, "iCab\s+(\d+\.\d+)" ], Engine: "CAB" }, { /* Konqueror */ Name: [ navigator.vendor, "KDE", "Konqueror" ], Version: [ navigator.appVersion, "Konqueror/(\d+\.\d+)" ], Engine: "KHTML" }, { /* Mozilla Firefox */ Name: [ navigator.userAgent, "(Firefox)" ], Version: [ navigator.appVersion, "Firefox/(\d+\.\d+)" ], Engine: "Gecko" }, { /* Camino */ Name: [ navigator.vendor, "(Camino)" ], Version: [ navigator.appVersion, "Camino/(\d+\.\d+)" ], Engine: "Gecko" }, { /* AOL Netscape */ Name: [ navigator.userAgent, "(Netscape)" ], Version: [ navigator.appVersion, "Netscape/(\d+\.\d+)" ], Engine: "Gecko" }, { /* Microsoft Internet Explorer */ Name: [ navigator.userAgent, "(MSIE)" ], Version: [ navigator.appVersion, "MSIE\s+(\d+\.\d+)" ], Engine: "MSIE" }, { /* Mozilla SeaMonkey */ Name: [ navigator.userAgent, "Gecko", "SeaMonkey" ], Version: [ navigator.appVersion, "rv:(\d+\.\d+)" ], Engine: "Gecko" }, ]; /* the system determination specification data structure */ $.browser.system_spec$ = [ /* Windows */ [ navigator.userAgent, "(Windows|Win32|Win64)" ], /* MacOSX */ [ navigator.userAgent, "(Macintosh|Darwin|Apple)", "MacOSX" ], /* Unix */ [ navigator.userAgent, "(BSD|Linux|SunOS|IRIX|Unix)", "Unix" ] ]; /* driver for the browser determination specification data structure */ for (var i = 0; i < $.browser.product_spec$.length; i++) { var str = $.browser.product_spec$[i].Name[0]; if ($.browser.product_spec$[i].Name[1] === null) var found = (typeof str !== "undefined"); else { var regex = RegExp(".*" + $.browser.product_spec$[i].Name[1] + ".*"); var subst = (typeof $.browser.product_spec$[i].Name[2] !== "undefined" ? $.browser.product_spec$[i].Name[2] : "$1"); var name = str.replace(regex, subst); var found = (name !== null && name != str); } if (found) { $.browser.product$ = name; $.browser.engine$ = $.browser.product_spec$[i].Engine; var str = $.browser.product_spec$[i].Version[0]; var regex = RegExp(".*" + $.browser.product_spec$[i].Version[1] + ".*"); var subst = (typeof $.browser.product_spec$[i].Version[2] !== "undefined" ? $.browser.product_spec$[i].Version[2] : "$1"); var version = str.replace(regex, subst); if (version !== null && version != str) $.browser.version$ = version; break; } } /* driver for the system determination specification data structure */ for (var i = 0; i < $.browser.system_spec$.length; i++) { var str = $.browser.system_spec$[i][0]; var regex = RegExp(".*" + $.browser.system_spec$[i][1] + ".*"); var subst = (typeof $.browser.system_spec$[i][2] !== "undefined" ? $.browser.system_spec$[i][2] : "$1"); var system = str.replace(regex, subst); if (system !== null && system != str) { $.browser.system$ = system; break; } } /* information access methods */ $.browser.product = function (match) { if (typeof match !== "undefined") return ($.browser.product$ == match); else return $.browser.product$; }; $.browser.version = function (match) { if (typeof match !== "undefined") return ($.browser.version$ == match); else return $.browser.version$; }; $.browser.engine = function (match) { if (typeof match !== "undefined") return ($.browser.engine$ == match); else return $.browser.engine$; }; $.browser.system = function (match) { if (typeof match !== "undefined") return ($.browser.system$ == match); else return $.browser.system$; }; })(jQuery);