Advertisement
Guest User

Class flags

a guest
Oct 7th, 2015
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. BrowserUtil = {
  2.    
  3.     openUrl: function(url){
  4.         window.open(url, "_self");
  5.     },
  6.  
  7.     isTouchDevice: function(){
  8.         try{
  9.             document.createEvent("TouchEvent");
  10.             return true;
  11.         }catch(e){
  12.             return false;
  13.         }
  14.     },
  15.  
  16.     getCurrentOS: function(){
  17.         var appVersion = navigator.appVersion;
  18.         if (appVersion.indexOf("Android")!=-1) return "android";
  19.         if (appVersion.indexOf("Mac")!=-1) return "mac";
  20.         if (appVersion.indexOf("Win")!=-1) return "windows";
  21.         if (appVersion.indexOf("X11")!=-1) return "unix";
  22.         if (appVersion.indexOf("Linux")!=-1) return "linux";
  23.  
  24.         return "unknown"
  25.     },
  26.  
  27.     isNixOS: function(){
  28.         var os = BrowserUtil.getCurrentOS();
  29.         return os === "unix" || os === "linux";
  30.     },
  31.  
  32.     isMac: function(){
  33.         var os = BrowserUtil.getCurrentOS();
  34.         return os === "mac";
  35.     },
  36.  
  37.     isAndroid: function(){
  38.         var os = BrowserUtil.getCurrentOS();
  39.         return os === "android";
  40.     },
  41.  
  42.     isIOS: function(){
  43.         var nP = navigator.platform;
  44.         return nP == "iPad" || nP == "iPhone" || nP == "iPod" || nP == "iPhone Simulator" || nP == "iPad Simulator";
  45.     },
  46.  
  47.     isWinPhone: function(){
  48.         return navigator.userAgent.match(/Windows Phone/i);
  49.     },
  50.  
  51.     isBlackBerry: function(){
  52.         return navigator.userAgent.match(/BlackBerry/i);
  53.     },
  54.  
  55.     isMobile: function(){
  56.         if(BrowserUtil.isAndroid()
  57.             || BrowserUtil.isIOS()
  58.             || BrowserUtil.isWinPhone()
  59.             || BrowserUtil.isBlackBerry()) return true;
  60.         return false;
  61.     },
  62.  
  63.     isIE: function(){
  64.         var userAgent = navigator.userAgent;
  65.         return $.browser.msie || (userAgent.indexOf("like Gecko") != -1 && userAgent.indexOf("rv") != -1);
  66.     },
  67.  
  68.     isIE9: function(){
  69.         return $.browser.msie && $.browser.version == 9;
  70.     },
  71.  
  72.     isIE10: function(){
  73.         return $.browser.msie && $.browser.version == 10;
  74.     },
  75.  
  76.     isIPad: function(){
  77.         return navigator.userAgent.match(/iPad/i) != null;
  78.     },
  79.  
  80.     isIPhone: function (){
  81.         return (
  82.             //Detect iPhone
  83.             (navigator.platform.indexOf("iPhone") != -1) ||
  84.             //Detect iPod
  85.             (navigator.platform.indexOf("iPod") != -1)
  86.         );
  87.     },
  88.  
  89.     isIPhone4: function(){
  90.         return BrowserUtil.isIPhone() && (window.screen.height == (960 / 2));
  91.     },
  92.  
  93.     isIPhone5: function(){
  94.         return BrowserUtil.isIPhone() && (window.screen.height == (1136 / 2));
  95.     },
  96.  
  97.     isChrome: function(){
  98.         return /chrome/.test(navigator.userAgent.toLowerCase());
  99.     },
  100.  
  101.     isFirefox: function(){
  102.         return /firefox/.test(navigator.userAgent.toLowerCase());
  103.     },
  104.  
  105.     isOpera: function(){
  106.         return $.browser.opera;
  107.     },
  108.  
  109.     isSafari: function(){
  110.         return navigator.userAgent.indexOf("Safari") > -1;
  111.     },
  112.  
  113.     isWebkit: function(){
  114.         return $.browser.webkit;
  115.     },
  116.  
  117.     getBrowserVersion: function(){
  118.         return $.browser.version;
  119.     },
  120.  
  121.     inIframe: function () {
  122.         try {
  123.             return window.self !== window.top;
  124.         } catch (e) {
  125.             return false;
  126.         }
  127.     },
  128.  
  129.     initWindowStateClasses: function(opt){
  130.  
  131.         opt = Util.extend({
  132.             smallWidth: 767,
  133.             mediumWidth: 991
  134.         }, opt);
  135.  
  136.         var s1 = "state-big";
  137.         var s2 = "state-medium";
  138.         var s3 = "state-small";
  139.  
  140.         var w = $(window);
  141.         var html = $("html");
  142.         var checkState = function(){
  143.             var width = w.width();
  144.             if(width <= opt.smallWidth) {
  145.                 html.removeClass(s1).removeClass(s2).addClass(s3);
  146.                 return;
  147.             }
  148.             if(width <= opt.mediumWidth) {
  149.                 html.removeClass(s1).removeClass(s3).addClass(s2);
  150.                 return;
  151.             }
  152.             html.removeClass(s2).removeClass(s3).addClass(s1);
  153.         }
  154.         checkState();
  155.         w.on('resize', checkState);
  156.     },
  157.  
  158.     isSmallState: function(){
  159.         return $("html").hasClass("state-small");
  160.     }
  161.  
  162. };
  163.  
  164. BrowserUtil.initWindowStateClasses();
  165.  
  166.  
  167. //Добавляем флаг браузера
  168. if(window.BrowserUtil){
  169.  
  170.     function initHtmlClasses(){
  171.         var html = $("html");
  172.         if(BrowserUtil.isIE()) html.addClass("ie");
  173.         if(BrowserUtil.isIE9()) html.addClass("ie9");
  174.         if(BrowserUtil.isIE10()) html.addClass("ie10");
  175.         if(BrowserUtil.isChrome()) html.addClass("chrome");
  176.         if(BrowserUtil.isFirefox()) html.addClass("firefox");
  177.         if(BrowserUtil.isOpera()) html.addClass("opera");
  178.         if(BrowserUtil.isSafari() && ! BrowserUtil.isChrome()) html.addClass("safari");
  179.         if(BrowserUtil.isNixOS()) html.addClass("nix");
  180.         if(BrowserUtil.isMac()) {
  181.             html.addClass("mac-os");
  182.             if(BrowserUtil.isIPad()) {
  183.                 html.addClass("ipad");
  184.                 detectIpadVersionAsync(html);
  185.             }
  186.             else if(BrowserUtil.isIPhone()) html.addClass("iphone");
  187.             else html.addClass("mac-pc");
  188.         }
  189.         if(BrowserUtil.isAndroid()){
  190.             html.addClass("android");
  191.         }
  192.         if(BrowserUtil.isMobile()){
  193.             html.addClass("any-mobile");
  194.         }
  195.  
  196.         var version = BrowserUtil.getBrowserVersion();
  197.         if(version){
  198.             var shortVersion = version;
  199.             var splitsByDots = version.split(".");
  200.             if(splitsByDots.length > 0) shortVersion = splitsByDots[0];
  201.             html.addClass("ver-"+shortVersion);
  202.         }
  203.  
  204.     }
  205.  
  206.     //from http://stackoverflow.com/questions/7400489
  207.     //result will be set after initHtmlClasses() method end
  208.     function detectIpadVersionAsync(html){
  209.         window.ondevicemotion = function(event) {
  210.             if (navigator.platform.indexOf("iPad") != -1) {
  211.                 var version = 1;
  212.                 if (event.acceleration) version += window.devicePixelRatio;
  213.                 html.addClass("ipad-"+version);
  214.             }
  215.             window.ondevicemotion = null;
  216.         }
  217.     }
  218.  
  219.     initHtmlClasses();
  220.    
  221. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement