Created
October 28, 2013 17:19
-
-
Save miketaylr/7200866 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var isIphone = false, | |
isAndroidPhone = false, | |
isTierTablet = false, | |
isTierIphone = false, | |
isTierRichCss = false, | |
isTierGenericMobile = false, | |
engineWebKit = "webkit", | |
deviceIphone = "iphone", | |
deviceIpod = "ipod", | |
deviceIpad = "ipad", | |
deviceMacPpc = "macintosh", | |
deviceAndroid = "android", | |
deviceGoogleTV = "googletv", | |
deviceXoom = "xoom", | |
deviceHtcFlyer = "htc_flyer", | |
deviceNuvifone = "nuvifone", | |
deviceSymbian = "symbian", | |
deviceS60 = "series60", | |
deviceS70 = "series70", | |
deviceS80 = "series80", | |
deviceS90 = "series90", | |
deviceWinPhone7 = "windows phone os 7", | |
deviceWinMob = | |
"windows ce", | |
deviceWindows = "windows", | |
deviceIeMob = "iemobile", | |
devicePpc = "ppc", | |
enginePie = "wm5 pie", | |
deviceBB = "blackberry", | |
vndRIM = "vnd.rim", | |
deviceBBStorm = "blackberry95", | |
deviceBBBold = "blackberry97", | |
deviceBBTour = "blackberry96", | |
deviceBBCurve = "blackberry89", | |
deviceBBTorch = "blackberry 98", | |
deviceBBPlaybook = "playbook", | |
devicePalm = "palm", | |
deviceWebOS = "webos", | |
engineBlazer = "blazer", | |
engineXiino = "xiino", | |
deviceKindle = "kindle", | |
vndwap = "vnd.wap", | |
wml = "wml", | |
deviceBrew = "brew", | |
deviceDanger = "danger", | |
deviceHiptop = "hiptop", | |
devicePlaystation = | |
"playstation", | |
deviceNintendoDs = "nitro", | |
deviceNintendo = "nintendo", | |
deviceWii = "wii", | |
deviceXbox = "xbox", | |
deviceArchos = "archos", | |
engineOpera = "opera", | |
engineNetfront = "netfront", | |
engineUpBrowser = "up.browser", | |
engineOpenWeb = "openweb", | |
deviceMidp = "midp", | |
uplink = "up.link", | |
engineTelecaQ = "teleca q", | |
devicePda = "pda", | |
mini = "mini", | |
mobile = "mobile", | |
mobi = "mobi", | |
maemo = "maemo", | |
maemoTablet = "tablet", | |
linux = "linux", | |
qtembedded = "qt embedded", | |
mylocom2 = "com2", | |
manuSonyEricsson = "sonyericsson", | |
manuericsson = "ericsson", | |
manuSamsung1 = "sec-sgh", | |
manuSony = "sony", | |
manuHtc = "htc", | |
svcDocomo = "docomo", | |
svcKddi = "kddi", | |
svcVodafone = "vodafone", | |
disUpdate = "update", | |
uagent = navigator.userAgent.toLowerCase(); | |
function DetectIphone() { | |
return uagent.search(deviceIphone) > -1 ? DetectIpad() || DetectIpod() ? false : true : false | |
} | |
function DetectIpod() { | |
return uagent.search(deviceIpod) > -1 ? true : false | |
} | |
function DetectIpad() { | |
return uagent.search(deviceIpad) > -1 && DetectWebkit() ? true : false | |
} | |
function DetectIphoneOrIpod() { | |
return uagent.search(deviceIphone) > -1 || uagent.search(deviceIpod) > -1 ? true : false | |
} | |
function DetectIos() { | |
return DetectIphoneOrIpod() || DetectIpad() ? true : false | |
} | |
function DetectAndroid() { | |
if (uagent.search(deviceAndroid) > -1 || DetectGoogleTV()) return true; | |
return uagent.search(deviceHtcFlyer) > -1 ? true : false | |
} | |
function DetectAndroidPhone() { | |
if (DetectAndroid() && uagent.search(mobile) > -1) return true; | |
return uagent.search(deviceHtcFlyer) > -1 ? true : false | |
} | |
function DetectAndroidTablet() { | |
if (uagent.search(deviceHtcFlyer) > -1) return false; | |
return DetectAndroid() && !(uagent.search(mobile) > -1) ? true : false | |
} | |
function DetectAndroidWebKit() { | |
return DetectAndroid() && DetectWebkit() ? true : false | |
} | |
function DetectGoogleTV() { | |
return uagent.search(deviceGoogleTV) > -1 ? true : false | |
} | |
function DetectWebkit() { | |
return uagent.search(engineWebKit) > -1 ? true : false | |
} | |
function DetectS60OssBrowser() { | |
return DetectWebkit() ? uagent.search(deviceS60) > -1 || uagent.search(deviceSymbian) > -1 ? true : false : false | |
} | |
function DetectSymbianOS() { | |
return uagent.search(deviceSymbian) > -1 || uagent.search(deviceS60) > -1 || uagent.search(deviceS70) > -1 || uagent.search(deviceS80) > -1 || uagent.search(deviceS90) > -1 ? true : false | |
} | |
function DetectWindowsPhone7() { | |
return uagent.search(deviceWinPhone7) > -1 ? true : false | |
} | |
function DetectWindowsMobile() { | |
if (DetectWindowsPhone7()) return false; | |
if (uagent.search(deviceWinMob) > -1 || uagent.search(deviceIeMob) > -1 || uagent.search(enginePie) > -1) return true; | |
if (uagent.search(devicePpc) > -1 && !(uagent.search(deviceMacPpc) > -1)) return true; | |
return uagent.search(manuHtc) > -1 && uagent.search(deviceWindows) > -1 ? true : false | |
} | |
function DetectBlackBerry() { | |
if (uagent.search(deviceBB) > -1) return true; | |
return uagent.search(vndRIM) > -1 ? true : false | |
} | |
function DetectBlackBerryTablet() { | |
return uagent.search(deviceBBPlaybook) > -1 ? true : false | |
} | |
function DetectBlackBerryWebKit() { | |
return DetectBlackBerry() && uagent.search(engineWebKit) > -1 ? true : false | |
} | |
function DetectBlackBerryTouch() { | |
return DetectBlackBerry() && (uagent.search(deviceBBStorm) > -1 || uagent.search(deviceBBTorch) > -1) ? true : false | |
} | |
function DetectBlackBerryHigh() { | |
if (DetectBlackBerryWebKit()) return false; | |
return DetectBlackBerry() ? DetectBlackBerryTouch() || uagent.search(deviceBBBold) > -1 || uagent.search(deviceBBTour) > -1 || uagent.search(deviceBBCurve) > -1 ? true : false : false | |
} | |
function DetectBlackBerryLow() { | |
return DetectBlackBerry() ? DetectBlackBerryHigh() || DetectBlackBerryWebKit() ? false : true : false | |
} | |
function DetectPalmOS() { | |
return uagent.search(devicePalm) > -1 || uagent.search(engineBlazer) > -1 || uagent.search(engineXiino) > -1 ? DetectPalmWebOS() ? false : true : false | |
} | |
function DetectPalmWebOS() { | |
return uagent.search(deviceWebOS) > -1 ? true : false | |
} | |
function DetectGarminNuvifone() { | |
return uagent.search(deviceNuvifone) > -1 ? true : false | |
} | |
function DetectSmartphone() { | |
if (DetectIphoneOrIpod()) return true; | |
if (DetectAndroidPhone()) return true; | |
if (DetectS60OssBrowser()) return true; | |
if (DetectSymbianOS()) return true; | |
if (DetectWindowsMobile()) return true; | |
if (DetectWindowsPhone7()) return true; | |
if (DetectBlackBerry()) return true; | |
if (DetectPalmWebOS()) return true; | |
if (DetectPalmOS()) return true; | |
if (DetectGarminNuvifone()) return true; | |
return false | |
} | |
function DetectArchos() { | |
return uagent.search(deviceArchos) > -1 ? true : false | |
} | |
function DetectBrewDevice() { | |
return uagent.search(deviceBrew) > -1 ? true : false | |
} | |
function DetectDangerHiptop() { | |
return uagent.search(deviceDanger) > -1 || uagent.search(deviceHiptop) > -1 ? true : false | |
} | |
function DetectMaemoTablet() { | |
if (uagent.search(maemo) > -1) return true; | |
return uagent.search(maemoTablet) > -1 && uagent.search(linux) > -1 ? true : false | |
} | |
function DetectSonyMylo() { | |
return uagent.search(manuSony) > -1 ? uagent.search(qtembedded) > -1 || uagent.search(mylocom2) > -1 ? true : false : false | |
} | |
function DetectOperaMobile() { | |
return uagent.search(engineOpera) > -1 ? uagent.search(mini) > -1 || uagent.search(mobi) > -1 ? true : false : false | |
} | |
function DetectSonyPlaystation() { | |
return uagent.search(devicePlaystation) > -1 ? true : false | |
} | |
function DetectNintendo() { | |
return uagent.search(deviceNintendo) > -1 || uagent.search(deviceWii) > -1 || uagent.search(deviceNintendoDs) > -1 ? true : false | |
} | |
function DetectXbox() { | |
return uagent.search(deviceXbox) > -1 ? true : false | |
} | |
function DetectGameConsole() { | |
if (DetectSonyPlaystation()) return true; | |
if (DetectNintendo()) return true; | |
return DetectXbox() ? true : false | |
} | |
function DetectKindle() { | |
return uagent.search(deviceKindle) > -1 ? true : false | |
} | |
function DetectMobileQuick() { | |
if (DetectTierTablet()) return false; | |
if (DetectSmartphone()) return true; | |
if (uagent.search(deviceMidp) > -1 || DetectBrewDevice()) return true; | |
if (DetectOperaMobile()) return true; | |
if (uagent.search(engineNetfront) > -1) return true; | |
if (uagent.search(engineUpBrowser) > -1) return true; | |
if (uagent.search(engineOpenWeb) > -1) return true; | |
if (DetectDangerHiptop()) return true; | |
if (DetectMaemoTablet()) return true; | |
if (DetectArchos()) return true; | |
if (uagent.search(devicePda) > -1 && !(uagent.search(disUpdate) > -1)) return true; | |
if (uagent.search(mobile) > -1) return true; | |
if (DetectKindle()) return true; | |
return false | |
} | |
function DetectMobileLong() { | |
if (DetectMobileQuick()) return true; | |
if (DetectGameConsole()) return true; | |
if (DetectSonyMylo()) return true; | |
if (uagent.search(manuSamsung1) > -1 || uagent.search(manuSonyEricsson) > -1 || uagent.search(manuericsson) > -1) return true; | |
if (uagent.search(svcDocomo) > -1) return true; | |
if (uagent.search(svcKddi) > -1) return true; | |
if (uagent.search(svcVodafone) > -1) return true; | |
return false | |
} | |
function DetectTierTablet() { | |
return DetectIpad() || DetectAndroidTablet() || DetectBlackBerryTablet() ? true : false | |
} | |
function DetectTierIphone() { | |
if (DetectIphoneOrIpod()) return true; | |
if (DetectAndroidPhone()) return true; | |
if (DetectBlackBerryWebKit() && DetectBlackBerryTouch()) return true; | |
if (DetectPalmWebOS()) return true; | |
if (DetectGarminNuvifone()) return true; | |
return DetectMaemoTablet() ? true : false | |
} | |
function DetectTierRichCss() { | |
if (DetectMobileQuick()) { | |
if (DetectTierIphone()) return false; | |
if (DetectWebkit()) return true; | |
if (DetectS60OssBrowser()) return true; | |
if (DetectBlackBerryHigh()) return true; | |
if (DetectWindowsPhone7()) return true; | |
if (DetectWindowsMobile()) return true; | |
return uagent.search(engineTelecaQ) > -1 ? true : false | |
} else return false | |
} | |
function DetectTierOtherPhones() { | |
return DetectMobileLong() ? DetectTierIphone() || DetectTierRichCss() ? false : true : false | |
} | |
function InitDeviceScan() { | |
isIphone = DetectIphoneOrIpod(); | |
isAndroidPhone = DetectAndroidPhone(); | |
isTierIphone = DetectTierIphone(); | |
isTierTablet = DetectTierTablet(); | |
isTierRichCss = DetectTierRichCss(); | |
isTierGenericMobile = DetectTierOtherPhones() | |
} | |
InitDeviceScan(); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment