El código de detección de mi navegador es algo como esto
navigator.sayswho = (function () { var ua = navigator.userAgent; var tem; var M = ua.match(/(opera|chrome|safari|firefox|msie|trident(?=\/))\/?\s*(\d+)/i) || []; if (/trident/i.test(M[1])) { tem = /\brv[ :]+(\d+)/g.exec(ua) || []; return 'IE ' + (tem[1] || ''); } if (M[1] === 'Chrome') { tem = ua.match(/\b(OPR|Edge)\/(\d+)/); if (tem != null) return tem.slice(1).join(' ').replace('OPR', 'Opera'); } M = M[2] ? [M[1], M[2]] : [navigator.appName, navigator.appVersion, '-?']; if ((tem = ua.match(/version\/(\d+)/i)) != null) M.splice(1, 1, tem[1]); return M.join(' '); })(); alert(navigator.sayswho); // outputs: `Chrome 62` });Todo se ve bien, pero al límite, este código devuelve el navegador como "Chrome". ¿Cómo puedo arreglar esto?
Por lo general, pongo Edge check en la parte superior para pasar esto. Cuando intentas ver
userAgent en cromo : Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, como Gecko) Chrome/94.0.4606.81 Safari/537.36'
userAgent en Edge : Mozilla/5.0 (Windows NT 10.0; Win64; x64; ServiceUI 14) AppleWebKit/537.36 (KHTML, como Gecko) Chrome/70.0.3538.102 Safari/537.36 Edge/18.19041
Incluso en Edge contiene cromo antes que Edge. Se usa el siguiente código para verificar que esto normalmente verifique Edge antes que Chrome.
function fnBrowserDetect(){ let userAgent = navigator.userAgent; let browserName; if(userAgent.match(/edg/i)){ browserName = "edge"; } else if(userAgent.match(/chrome|chromium|crios/i)){ browserName = "chrome"; }else if(userAgent.match(/firefox|fxios/i)){ browserName = "firefox"; } else if(userAgent.match(/safari/i)){ browserName = "safari"; }else if(userAgent.match(/opr\//i)){ browserName = "opera"; }else{ browserName="No browser detection"; } return "You are using "+ browserName +" browser"; }Básicamente, actualmente está utilizando el método heredado para detectar el cliente del usuario. New Standard recomienda usar navigator.userAgentData.brands para detectar el nombre real del cliente del navegador, ya sea Chrome o Edge. Puedes verlo aquí para el borde. También puede consultar los documentos oficiales de mdn para este propósito.