1 2navigator.sayswho = ( function () { 3 var ua = navigator.userAgent, tem, 4 M = ua.match( /(opera|chrome|safari|firefox|msie|trident(?=\/))\/?\s*(\d+)/i ) || []; 5 if ( /trident/i.test( M[1] ) ) { 6 tem = /\brv[ :]+(\d+)/g.exec( ua ) || []; 7 return 'IE ' + ( tem[1] || '' ); 8 } 9 if ( /msie/i.test( M[1] ) ) { 10 tem = /\bMSIE[ ]+(\d+)/g.exec( ua ) || []; 11 return 'IE ' + ( tem[1] || '' ); 12 } 13 if ( M[1] === 'Chrome' ) { 14 tem = ua.match( /\b(OPR|Edge)\/(\d+)/ ); 15 if ( tem != null ) return tem.slice( 1 ).join( ' ' ).replace( 'OPR', 'Opera' ); 16 } 17 M = M[2] ? [M[1], M[2]] : [navigator.appName, navigator.appVersion, '-?']; 18 if ( ( tem = ua.match( /version\/(\d+)/i ) ) != null ) M.splice( 1, 1, tem[1] ); 19 return M.join( ' ' ); 20})(); 21 22if(typeof String.prototype.trim !== 'function') { 23 String.prototype.trim = function() { 24 return this.replace(/^\s+|\s+$/g, ''); 25 } 26} 27 28var str = navigator.sayswho; 29var browser = str.substring( 0, str.indexOf( " " ) ); 30var version = str.substring( str.indexOf( " " ) ); 31version = version.trim(); 32version = parseInt( version ); 33 34if ( ( browser === "Chrome" && version < 87 ) 35 || ( browser === "Firefox" && version < 60 ) 36 || ( browser === "Safari" && version < 10 ) 37 || ( browser === "IE") 38 || (!!window.MSInputMethodContext && !!document.documentMode) 39 || ( browser === "Opera" && version < 52 ) ) { 40 var unsupport_browser = document.getElementById('unsupport-browser'); 41 if (unsupport_browser) { unsupport_browser.style.display = 'block'; } 42}else { 43 var app_root = document.getElementById('app-root'); 44 if (app_root) { app_root.style.display = 'block'; } 45}
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.