1 2(function($){ 3 $(document).ready( function(){ 4 var user_agent = navigator.userAgent; 5 var is_opera_edge; 6 var browser = user_agent.match(/(opera|chrome|safari|firefox|msie|trident(?=\/))/i) || []; 7 var browser_name = ''; 8 var browser_class = ''; 9 10 if ( /trident/i.test( browser[0] ) ) { 11 browser_name = 'ie'; 12 } else if ( browser[0] === 'Chrome' ) { 13 is_opera_edge = user_agent.match(/\b(OPR|Edge)/); 14 15 if ( is_opera_edge !== null ) { 16 browser_name = is_opera_edge[0].replace('OPR', 'opera'); 17 } 18 } 19 20 // use navigator.appName as browser name if we were unable to get it from user_agent 21 if ( '' === browser_name ) { 22 if ('standalone' in window.navigator && !window.navigator.standalone) { 23 browser_name = 'uiwebview'; 24 } else { 25 browser_name = browser[0] && '' !== browser[0] ? browser[0] : navigator.appName; 26 } 27 } 28 29 browser_name = browser_name.toLowerCase(); 30 31 // convert browser name to class. Some classes do not match the browser name 32 switch( browser_name ) { 33 case 'msie' : 34 browser_class = 'ie'; 35 break; 36 case 'firefox' : 37 browser_class = 'gecko'; 38 break; 39 default : 40 browser_class = browser_name; 41 break; 42 } 43 44 // add `iphone` class if browsing from iphone 45 if ( user_agent.match(/iPhone/) ) { 46 browser_class += ' iphone'; 47 } 48 49 $( 'body' ).addClass( browser_class ); 50 }); 51})(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.