2015-04-08 2 views
-1

Я кеширую различные браузеры со следующим кодом, я не могу кэшировать конкретный.Обнаружение браузера с сервера с Java

Может ли кто-нибудь дать мне совет?

if (user.contains("msie")) { 
        String substring = userAgent.substring(userAgent.indexOf("MSIE")).split(";")[0]; 
        browser = substring.split(" ")[0].replace("MSIE", "IE") + "-"+ substring.split(" ")[1]; 
       } else if (user.contains("safari") && user.contains("version")) { 
        browser = (userAgent.substring(userAgent.indexOf("Safari")).split(" ")[0]).split("/")[0]+ "-"+ (userAgent.substring(userAgent.indexOf("Version")).split(" ")[0]).split("/")[1]; 
       } else if (user.contains("opr") || user.contains("opera")) { 
        if (user.contains("opera")) 
         browser = (userAgent.substring(userAgent.indexOf("Opera")).split(" ")[0]).split("/")[0]+ "-"+ (userAgent.substring(userAgent.indexOf("Version")).split(" ")[0]).split("/")[1]; 
        else if (user.contains("opr")) 
         browser = ((userAgent.substring(userAgent.indexOf("OPR")).split(" ")[0]).replace("/", "-")).replace("OPR","Opera"); 
       } else if (user.contains("chrome")) { 
        browser = (userAgent.substring(userAgent.indexOf("Chrome")).split(" ")[0]).replace("/", "-"); 
       } else if ((user.indexOf("mozilla/36.0") > -1) 
         || (user.indexOf("netscape6") != -1) 
         || (user.indexOf("mozilla/35.0") != -1) 
         || (user.indexOf("mozilla/34.0") != -1) 
         || (user.indexOf("mozilla/33.1") != -1) 
         || (user.indexOf("mozilla/33.0") != -1) 
         || (user.indexOf("mozilla/32.0") != -1) 
         || (user.indexOf("mozilla/31.0") != -1)) { 

        browser = "Netscape-?"; 

       } else if (user.contains("firefox")) { 
        browser = (userAgent.substring(userAgent.indexOf("Firefox")).split(" ")[0]).replace("/", "-"); 
       } else if (user.contains("rv")) { 
        browser = "IE"; 
       } else { 
        browser = "UnKnown, More-Info: " + userAgent; 
       } 
      } catch (Exception e) { 
       browser = "Exception: " + userAgent; 
      } 
+0

Как вы ожидаете, что это сработает? вы проверяете браузер на машине, на которой вы не работаете. – Stultuske

+0

проверено на производство. – sherybedrock

+0

Владислав: окружающая среда не имеет значения. этот код запускается (как вы сказали) на сервере, пока вы пытаетесь определить браузер на клиенте. Для этого вам понадобятся некоторые клиентские скрипты. – Stultuske

ответ

0

Зачем нужен код на стороне сервера, вы можете легко сделать это в javascript.

function detect() { 
       var browser; 
       var version;     
       var platform = navigator.platform; 

       if (platform == "iPad" || platform == "iPhone" || platform == "iPod" || platform == "iPod touch") { // For iPhones iPads and iPods 

        var userAgent = navigator.userAgent.toUpperCase(); 

        var chromeIndex = userAgent.indexOf("CRIOS"); 
        var opera = userAgent.indexOf("OPIOS"); 
        var ucIndex = userAgent.indexOf("UCBROWSER"); 
        var coast = userAgent.indexOf("COAST"); 
        var mercury = userAgent.indexOf("MERCURY"); 

        var safari = userAgent.indexOf("SAFARI"); 
        var webkit = userAgent.indexOf("APPLEWEBKIT"); 

        // Chrome detection 
        if(chromeIndex > 0) { 
         browser = "chrome"; 

         var arr = userAgent.split("CRIOS/"); 
         arr = arr[1].split("."); 
         version = arr[0]; 
        } 
        // Safari detection 
        else if(opera < 0 && ucIndex < 0 && coast < 0 && mercury < 0 && safari > 0 && webkit > 0) { 
         browser = "safari"; 

         var arr = userAgent.split("APPLEWEBKIT/"); 
         arr = arr[1].split("."); 
         version = arr[0]; 
        } else { 
         browser = "unknown"; 
         version = -1; 
        } 

       } else if(platform == "Win32" || platform == "MacIntel") { // For windows and mac 

        // Browser detection 
        var isOpera = !!window.opera || navigator.userAgent.indexOf(' OPR/') >= 0; 
        // Opera 8.0+ (UA detection to detect Blink/v8-powered Opera) 
        var isFirefox = typeof InstallTrigger !== 'undefined'; // Firefox 1.0+ 
        var isSafari = Object.prototype.toString.call(window.HTMLElement).indexOf('Constructor') > 0; 
        // At least Safari 3+: "[object HTMLElementConstructor]" 
        var isChrome = !!window.chrome && !isOpera; // Chrome 1+ 
        var isIE = /*@[email protected]*/false || !!document.documentMode; // At least IE6 


        if (isOpera) { 
         browser = "opera"; 
        } else if (isFirefox) { 
         browser = "firefox"; 
        } else if (isChrome) { 
         browser = "chrome"; 
        } else if (isIE) { 
         browser = "ie"; 
        } else if (isSafari) { 
         browser = "safari"; 
        } else { 
         browser = "unknown"; 
        } 

        if (browser == "firefox") { 
         var arr = navigator.userAgent.split("Firefox/"); 
         arr = arr[1].split("."); 
         version = arr[0]; 
        } else if (browser == "chrome") { 
         var arr = navigator.userAgent.split("Chrome/"); 
         arr = arr[1].split("."); 
         version = arr[0]; 
        } else if (browser == "ie") { 
         var v1 = navigator.userAgent.indexOf("MISE"); 
         var v2 = navigator.userAgent.indexOf("rv:"); 

         if(v1 > 0) { 
          var arr = navigator.userAgent.split("MSIE "); 
          arr = arr[1].split("."); 
          version = arr[0]; 
         } else if(v2 > 0){ 
          var arr = navigator.userAgent.split("rv:"); 
          arr = arr[1].split("."); 
          version = arr[0]; 
         } else { 
          version = 11; 
         } 
        } else if (browser == "safari") { 
         var arr = navigator.userAgent.split("AppleWebKit/"); 
         arr = arr[1].split("."); 
         version = arr[0]; 
        } else if (browser == "opera") { 
         var arr = navigator.userAgent.split("OPR/"); 
         arr = arr[1].split("."); 
         version = arr[0]; 
        } else if (browser == "unknown") { 
         version = -1; 
        } 

       } else if(platform == "Android" || platform == "Linux armv7l") { // For android 
        var userAgent = navigator.userAgent; 

        var chromeIndex = userAgent.indexOf("Chrome"); 
        var opera = userAgent.indexOf("OPR"); 
        var ucIndex = userAgent.indexOf("UCBrowser"); 
        var coast = userAgent.indexOf("Coast"); 
        var firefox = userAgent.indexOf("Firefox"); 

        // Chrome detection 
        if(chromeIndex > 0 && opera < 0 && ucIndex < 0 && coast < 0) { 
         browser = "chrome"; 

         var arr = userAgent.split("Chrome/"); 
         arr = arr[1].split("."); 
         version = arr[0]; 

        } else if(firefox > 0) { // Firefox detection 
         browser = "firefox"; 

         var arr = userAgent.split("Firefox/"); 
         arr = arr[1].split("."); 
         version = arr[0]; 

        } else if(opera > 0) { // Opera detection 
         browser = "opera"; 

         var arr = userAgent.split("OPR/"); 
         arr = arr[1].split("."); 
         version = arr[0]; 

        } else { // Unknown browser 
         browser = "unknown"; 
         version = -1; 
        } 

       } else { // For other platforms 
        version = -1; 
        browser = "other_platform"; 
       } 

Я использовал этот скрипт в своем приложении, вы можете найти его полезным.

+0

есть код для обнаружения и операционной системы? Спасибо soumitri pattnaik – sherybedrock

+0

soumitri pattnaik, как вы отправляете эту информацию обозревателя на сервер? – sherybedrock

+0

Вы можете установить их в cookie, и вы можете читать файлы cookie с сервера. –