$(function () { $.ua = { device: {}, platform: {}, browser: {}, engine: {} }; var ua = navigator.userAgent.toLowerCase(), uaDevice = $.ua.device, uaPlatform = $.ua.platform, uaBrowser = $.ua.browser, uaEngine = $.ua.engine; // DETECT DEVICE if (ua.match(/mobile/)) { uaDevice.name = 'device_mobile'; uaDevice.mobile = true; } else if (ua.match(/tablet/)) { uaDevice.name = 'device_tablet'; uaDevice.tablet = true; } else { uaDevice.name = 'device_desktop'; uaDevice.unknown = true; } // DETECT PLATFORM if (ua.match(/windows nt 5.0/i)) { uaPlatform.name = 'platform_win_2k'; uaPlatform.win = true; } else if (ua.match(/windows nt 5.1/i)) { uaPlatform.name = 'platform_win_xp'; uaPlatform.win = true; } else if (ua.match(/windows nt 6.0/i)) { uaPlatform.name = 'platform_win_vista'; uaPlatform.win = true; } else if (ua.match(/windows nt 6.1/i)) { uaPlatform.name = 'platform_win_7'; uaPlatform.win = true; } else if (ua.match(/windows nt 6.2/i)) { uaPlatform.name = 'platform_win_8'; uaPlatform.win = true; } else if (ua.match(/macintosh/i)) { uaPlatform.name = 'platform_mac'; uaPlatform.mac = true; } else if (ua.match(/linux/i)) { uaPlatform.name = 'platform_linux'; uaPlatform.linux = true; } else if (ua.match(/iphone|iPod/i)) { uaPlatform.name = 'platform_iphone'; uaPlatform.iphone = true; } else if (ua.match(/ipad/i)) { uaPlatform.name = 'platform_ipad'; uaPlatform.ipad = true; } else if (ua.match(/android/i)) { uaPlatform.name = 'platform_android'; uaPlatform.android = true; } else { uaPlatform.name = 'platform_unknown'; uaPlatform.unknown = true; } // DETECT BROWSER if (/msie/.test(ua)) { uaBrowser.name = 'browser_msie'; uaBrowser.msie = true; } else if (/firefox/.test(ua)) { uaBrowser.name = 'browser_firefox'; uaBrowser.firefox = true; } else if (/safari/.test(ua)) { uaBrowser.name = 'browser_safari'; uaBrowser.safari = true; } else if (/opera/.test(ua)) { uaBrowser.name = 'browser_opera'; uaBrowser.opera = true; } else { uaBrowser.name = 'browser_unknown'; uaBrowser.unknown = true; } if (/chrome/.test(ua)) { uaBrowser.name = 'browser_chrome'; uaBrowser.chrome = true; uaBrowser.safari = false; } // DETECT BROWSER VERSION if (uaBrowser.msie) { uaBrowser.version = /msie (\d+(\.\d+)*)/.exec(ua)[1]; } else if (uaBrowser.firefox) { uaBrowser.version = /firefox\/(\d+(\.\d+)*)/.exec(ua)[1]; } else if (uaBrowser.opera) { uaBrowser.version = /version\/? ?(\d+(\.\d+)*)/.exec(ua)[1]; } else if (uaBrowser.safari) { uaBrowser.version = /version\/(\d+(\.\d+)*)/.exec(ua)[1]; } else if (uaBrowser.chrome) { uaBrowser.version = /chrome\/(\d+(\.\d+)*)/.exec(ua)[1]; } else { uaBrowser.version = 0; } // DETECT ENGINE if (/trident/.test(ua) || uaBrowser.msie) { uaEngine.name = 'engine_trident'; uaEngine.trident = true; } else if (/gecko/.test(ua)) { uaEngine.name = 'engine_gecko'; uaEngine.gecko = true; } else if (/presto/.test(ua)) { uaEngine.name = 'engine_presto'; uaEngine.presto = true; } else { uaEngine.name = 'engine_unknown'; uaEngine.unknown = true; } if (/webkit/.test(ua)) { uaEngine.name = 'engine_webkit'; uaEngine.gecko = false; uaEngine.webkit = true; } // ADD CLASSES TO HTML TAG $('html').addClass([ uaDevice.name, uaPlatform.name, uaBrowser.name, uaBrowser.name + "_v" + parseInt(uaBrowser.version, 10), uaEngine.name ].join(' ')); });