Se las arregló para usar una respuesta de la pregunta de otra persona hace 11 años ( ¿Cómo puede detectar la versión de un navegador? ) navegadores de fecha (mi declaración if se copia a continuación).
Lo que me pregunto es si hay una forma más sencilla de anotar la versión <= Safari 12 para que se detecte Safari 11, 10, 9, etc. en lugar de hacer la cadena de o || condicionales uno tras otro.
if (navigator.sayswho === 'Safari 12' || navigator.sayswho === 'Safari 11' || navigator.sayswho === 'Safari 10' || navigator.sayswho === 'Safari 9') { alert('Your browser ('+ navigator.sayswho +') is out of date, some features of our website may not work with your browser version.\r\n Please update your browser to ensure compatibility with our online product forms.\r\n\r\n'); }Funciona, pero estoy tratando de aprender cómo hacerlo un poco más elegante y simplificado en términos de código. Gracias por cualquier entrada que pueda proporcionar. Stackoverflow ha hecho que mi viaje hacia el desarrollo y la administración de sitios web sea mucho más productivo y agradable durante el último año. Saludos a todos.
Una prueba de expresión regular hará el truco.
if (/Safari (?:12|11|10|9)/.test(navigator.sayswho)) {Otro enfoque sería hacer coincidir los dígitos finales y luego verificar si están dentro del rango.
const match = navigator.sayswho.match(/Safari (\d+)/); const num = match ? Number(match[1]) : 0; if (num <= 12 && num > 9) {Recomendaría cambiar el cheque a:
const browser_list = [ 'Safari 12', 'Safari 11', 'Safari 10', 'Safari 9' ]; if (browser_list.includes(navigator.sayswho)) { // etc. }Esto es legible, mantenible y se puede cambiar fácilmente en el futuro para nuevos navegadores y versiones.