1(function($){ 2 $(document).ready( function(){ 3 var user_agent = navigator.userAgent; 4 var is_opera_edge; 5 var browser = user_agent.match(/(opera|chrome|safari|firefox|msie|trident(?=\/))/i) || []; 6 var browser_name = ''; 7 var browser_class = ''; 8 9 if ( /trident/i.test( browser[0] ) ) { 10 browser_name = 'ie'; 11 } else if ( browser[0] === 'Chrome' ) { 12 is_opera_edge = user_agent.match(/\b(OPR|Edge)/); 13 14 if ( is_opera_edge !== null ) { 15 browser_name = is_opera_edge[0].replace('OPR', 'opera'); 16 } 17 } 18 19 // use navigator.appName as browser name if we were unable to get it from user_agent 20 if ( '' === browser_name ) { 21 if ('standalone' in window.navigator && !window.navigator.standalone) { 22 browser_name = 'uiwebview'; 23 } else { 24 browser_name = browser[0] && '' !== browser[0] ? browser[0] : navigator.appName; 25 } 26 } 27 28 browser_name = browser_name.toLowerCase(); 29 30 // convert browser name to class. Some classes do not match the browser name 31 switch( browser_name ) { 32 case 'msie' : 33 browser_class = 'ie'; 34 break; 35 case 'firefox' : 36 browser_class = 'gecko'; 37 break; 38 default : 39 browser_class = browser_name; 40 break; 41 } 42 43 // add `iphone` class if browsing from iphone 44 if ( user_agent.match(/iPhone/) ) { 45 browser_class += ' iphone'; 46 } 47 48 $( 'body' ).addClass( browser_class ); 49 }); 50})(jQuery);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.