//sniffer v1 //Based on Ultimate client-side JavaScript client sniff //(C) Netscape Communications 1999. Permission granted to reuse and distribute. // convert all characters to lowercase to simplify testing var agt = navigator.userAgent.toLowerCase(); // *** BROWSER VERSION *** // Note: On IE5, these return 4, so use is.ie5up to detect IE5 // or is.ie6up to detect IE6. is_major = parseInt(navigator.appVersion); is_minor = parseFloat(navigator.appVersion); // Note: Opera and WebTV spoof Navigator. We do strict client detection. // If you want to allow spoofing, take out the tests for opera and webtv. is_moz = ((agt.indexOf('mozilla') != -1) && (agt.indexOf('spoofer')==-1) && (agt.indexOf('compatible') == -1) && (agt.indexOf('opera')==-1) && (agt.indexOf('webtv')==-1) && (agt.indexOf('hotjava')==-1)); is_moz2 = (is_moz && (is_major == 2)); is_moz3 = (is_moz && (is_major == 3)); is_moz4 = (is_moz && (is_major == 4)); //is_moz4up = (is_moz && (is_major >= 4)); //is_moz5 = (is_moz && (is_major == 5)); //is_moz5up = (is_moz && (is_major >= 5)); is_gecko = (agt.indexOf('gecko') != -1); is_firefox = (agt.indexOf('firefox') != -1); //is_firefox1 = (agt.indexOf('firefox/1.0') != -1); //is_firefox1up = (is_firefox && !is_firefox1); //is_firefox1_5 = (agt.indexOf('firefox/1.5') != -1); //is_firefox1_5up = (is_firefox1up && !is_firefox1_5); //is_firefox2 = (agt.indexOf('firefox/2.') != -1); //is_firefox2up = (is_firefox1_5up && !is_firefox2); // //is_seamonkey = (agt.indexOf('seamonkey') != -1); //is_seamonkey1 = (agt.indexOf('seamonkey/1') != -1); is_nav2 = is_moz2; is_nav3 = is_moz3; is_nav4 = is_moz4; is_nav4up = (is_nav4 || ((is_major >= 4) && (agt.indexOf("netscape") != -1))); is_nav = (is_nav2 || is_nav3 || is_nav4); //is_nav6 = (is_moz && (is_major == 5) && (agt.indexOf("netscape6/6") != -1)); //is_nav6up = (is_moz && (is_major >= 5) && (agt.indexOf("netscape") != -1)); //is_nav7 = (is_moz && (is_major == 5) && (agt.indexOf("netscape/7") != -1)); //is_nav7up = (is_nav6up && !is_nav6); //is_nav8 = (is_moz && (is_major == 5) && (agt.indexOf("netscape/8") != -1)); //is_nav8up = (is_nav7up && !is_nav7); //is_navonly = (is_nav && ((agt.indexOf(";nav") != -1) || (agt.indexOf("; nav") != -1)) ); is_mozilla = (is_moz && is_gecko); is_mozilla1 = (is_moz && is_gecko && (agt.indexOf("rv:1") != -1)); is_ie = ((agt.indexOf("msie") != -1) && (agt.indexOf("opera") == -1)); //is_ie3 = (is_ie && (is_major < 4)); //is_ie4 = (is_ie && (is_major == 4) && (agt.indexOf("msie 4") != -1) ); //is_ie4up = (is_ie && (is_major >= 4)); //is_ie5 = (is_ie && (is_major == 4) && (agt.indexOf("msie 5.0") != -1) ); //is_ie5up = (is_ie4up && !is_ie4); //is_ie5_5 = (is_ie && (is_major == 4) && (agt.indexOf("msie 5.5") != -1)); //is_ie5_5up = (is_ie5up && !is_ie5); is_ie6 = (is_ie && (is_major == 4) && (agt.indexOf("msie 6.") != -1) ); //is_ie6up = (is_ie5_5up && !is_ie5_5); is_ie7 = (is_ie && (is_major == 4) && (agt.indexOf("msie 7.") != -1) ); //is_ie7up = (is_ie6up && !is_ie6); is_ie8 = (is_ie && (is_major == 4) && (agt.indexOf("msie 8.") != -1) ); is_ie9 = (is_ie && (is_major == 5) && (agt.indexOf("msie 9.") != -1) ); //is_msn = (is_ie4up && (agt.indexOf("msn") != -1)); //is_msn2_5 = (is_msn && (agt.indexOf("msn 2.5") != -1)); //is_msn2_6 = (is_msn && (agt.indexOf("msn 2.6") != -1)); //is_aol = (agt.indexOf("aol") != -1); //is_aol3 = (is_aol && is_ie3); //is_aol4ie3 = (is_aol && is_ie3); //is_aol4ie4 = (is_aol && is_ie4); //is_aol4 = (is_aol4ie3 || is_aol4ie4); //is_aol5 = (agt.indexOf("aol 5") != -1); //is_aol6 = (agt.indexOf("aol 6") != -1); //is_aol7 = ((agt.indexOf("aol 7") != -1) || agt.indexOf("aol/7") != -1); //is_aol8 = ((agt.indexOf("aol 8") != -1) || agt.indexOf("aol/8") != -1); //is_aol9 = ((agt.indexOf("aol 9") != -1) || agt.indexOf("aol/9") != -1); is_opera = (agt.indexOf("opera") != -1); //is_opera2 = (agt.indexOf("opera 2") != -1 || agt.indexOf("opera/2") != -1); //is_opera3 = (agt.indexOf("opera 3") != -1 || agt.indexOf("opera/3") != -1); //is_opera4 = (agt.indexOf("opera 4") != -1 || agt.indexOf("opera/4") != -1); //is_opera5 = (agt.indexOf("opera 5") != -1 || agt.indexOf("opera/5") != -1); //is_opera5up = (is_opera && !is_opera2 && !is_opera3 && !is_opera4); //is_opera6 = (agt.indexOf("opera 6") != -1 || agt.indexOf("opera/6") != -1); //is_opera6up = (is_opera5up && !is_opera5); //is_opera7 = (agt.indexOf("opera 7") != -1 || agt.indexOf("opera/7") != -1); //is_opera7up = (is_opera6up && !is_opera6); //is_opera8 = (agt.indexOf("opera 8.0") != -1 || agt.indexOf("opera/8.0") != -1); //is_opera8up = (is_opera7up && !is_opera7); //is_opera8_5 = (agt.indexOf("opera 8.5") != -1 || agt.indexOf("opera/8.5") != -1); //is_opera8_5up = (is_opera8up && !is_opera8); //is_opera9 = (agt.indexOf("opera 9") != -1 || agt.indexOf("opera/9") != -1); //is_opera9up = (is_opera8_5up && !is_opera8_5); //is_webtv = (agt.indexOf("webtv") != -1); //is_TVNavigator = ((agt.indexOf("navio") != -1) || (agt.indexOf("navio_aoltv") != -1)); //is_AOLTV = is_TVNavigator; //is_hotjava = (agt.indexOf("hotjava") != -1); //is_hotjava3 = (is_hotjava && (is_major == 3)); //is_hotjava3up = (is_hotjava && (is_major >= 3)); //is_konqueror = (agt.indexOf("konqueror") != -1); is_safari = ((agt.indexOf('safari')!=-1) /*&& (agt.indexOf('mac')!=-1)*/); //is_khtml = (this.safari || this.konqueror); is_chrome = (agt.indexOf("chrome")!=-1) ? true:false; is_crOs = is_chrome && (agt.indexOf("csos")!=-1); is_chromeFrame = is_chrome && __chromeFrame; //webkit Based is_webkit = is_safari || is_chrome; // FOR TABLET PC is_ipad = (is_safari && (agt.indexOf('ipad')!=-1)); // FOR SMART PHONE is_iphone = (is_safari && (agt.indexOf('iphone')!=-1)); is_apple = (is_ipad || is_iphone); is_android = (agt.indexOf('android')!=-1); is_opera_mini = (agt.indexOf('opera mini')!=-1); is_smartphone = (is_webkit || is_iphone || is_android || is_opera_mini || is_ipad/* TODO... etc ... */);