2012-01-08 24 views
6

He estado escribiendo un userscript durante los últimos meses, para mi empresa, y acabo de diseñar el sitio principal con instrucciones de instalación (nuestros empleados tienen su sede en todo el mundo y muy pocos han oído hablar de los usuarios, y mucho menos los han utilizado, por lo que este frontend tiene el objetivo de reducir el tiempo que paso apoyando el script).jQuery - detectando el sistema operativo y la versión del sistema operativo

Lo que me gustaría hacer es, en la página de instalación, detectar qué navegador y la versión de OS/OS están usando para que pueda resaltar las instrucciones más relevantes ligeramente más oscuras que el resto, o simplemente no mostrar secciones irrelevantes .

Por ejemplo, para IE6 debe usar Trixie (creo) para instalar los archivos de usuario, y esto solo se admite en Win XP. IE7 es compatible con Win XP, IE8 es compatible con Win XP & Win 7 e IE9 solo es compatible con Win 7. Para IE7, 8 & 9 Aconsejo usar IEPro. La diferencia entre Trixie & IEPro es que Trixie requiere una extensión de archivo de .user.js que debe guardarse en C:/Archivos de programa/bhelpuri. IEPro, por otro lado, requiere que la extensión sea .ieuser y se guarde en una ubicación diferente. Para IE específicamente, me gustaría detectar la versión y mostrar solo el enlace correcto (ya sea .user.js o .ieuser, dependiendo de qué plugin deben usar para su navegador actual) para que se lleven a la versión correcta del archivo para ese navegador con la ruta de guardado correcta para esa versión de OS/OS. ¿Esto tiene algún sentido hasta ahora?

Básicamente mi pregunta es, ¿alguien sabe de una forma de detectar la versión del sistema operativo? Actualmente estoy usando http://www.stoimen.com/blog/2009/07/04/jquery-os-detection/, pero eso no da la versión del sistema operativo, solo el sistema operativo. He intentado recorrer todas las variables almacenadas en el objeto navegador sin éxito. Cualquier ayuda sería muy apreciada.

Editar: Gracias a la respuesta de Nates, he puesto el código exacto en http://jsfiddle.net/Mu8r5/1/. Espero que esto ayude a alguien en el futuro.

Respuesta

22

Su mejor opción es utilizar la propiedad navigator.userAgent. Dará el número de versión de Windows. Se puede ver una tabla de cómo el mapa número de versión de Windows para el sistema operativo aquí:

OSVERSIONINFO

Aquí es un código de ejemplo de detección:

var os = (function() { 
    var ua = navigator.userAgent.toLowerCase(); 
    return { 
     isWin2K: /windows nt 5.0/.test(ua), 
     isXP: /windows nt 5.1/.test(ua), 
     isVista: /windows nt 6.0/.test(ua), 
     isWin7: /windows nt 6.1/.test(ua), 
     isWin8: /windows nt 6.2/.test(ua), 
     isWin81: /windows nt 6.3/.test(ua) 
    }; 
}()); 

if(os.isWin7) { 
    ... 
} 

http://jsfiddle.net/45jEc/

+0

Gracias por el fragmento: ¡parece un gran punto de partida! Voy a publicar un jsfiddle dentro de mi pregunta más adelante cuando lo finalice. – ClarkeyBoy

1

La pregunta sobre el desbordamiento de pila Detect exact OS version from browser entra en algunos detalles interesantes sobre cómo obtener la versión del sistema operativo del encabezado User-Agent, que creo que contiene la misma información a la que se puede acceder desde JavaScript.

5

Puede utilizar esta gran biblioteca javascript: http://www.visitorjs.com/details Es poco

Edición de código abierto: En realidad, ahora renombrado a session.js http://github.com/codejoust/session.js y que yo sepa, es lo mejor que se puede conseguir.

+1

Gracias por los punteros, lo Creo que iré con la respuesta de Nates ya que prefiero escribir mi propio código (1 - sé exactamente lo que hace y 2 - aprendo más de esa manera). También he echado un vistazo a ese código y verificado dos veces, pero parece que no va tan lejos como la versión del sistema operativo, solo el sistema operativo. Gracias de cualquier manera. – ClarkeyBoy

+0

No es bueno para Windows 8.1, es decir, 11 cuando O/S vuelve como N/A – Rippo

Cuestiones relacionadas