web-dev-qa-db-fra.com

jQuery/Javascript pour détecter l'OS sans plugin?

Je cherche un moyen de détecter le système d'exploitation d'une page de téléchargement à l'aide de jQuery ou Javascript afin de recommander des fichiers spécifiques pour Mac par rapport à Windows. J'espérais le faire sans ajouter un autre plugin à ma page.

36
Tim Withers

Essayer: 

var os = navigator.platform;

Ensuite, gérez la variable os en conséquence pour votre résultat.

Vous pouvez également parcourir chaque objet de l'objet navigator pour vous familiariser davantage avec ces objets:

<script type="text/javascript">
for(var i in navigator){
    console.log(i+"="+navigator[i]+'<br>');
}
</script>
55
RobB

JavaScript peut être tout ce dont vous avez besoin. 

var OSName="Unknown OS";
if (navigator.appVersion.indexOf("Win")!=-1) OSName="Windows";
if (navigator.appVersion.indexOf("Mac")!=-1) OSName="MacOS";
if (navigator.appVersion.indexOf("X11")!=-1) OSName="UNIX";
if (navigator.appVersion.indexOf("Linux")!=-1) OSName="Linux";

document.write('Your OS: '+OSName);

Comme Nick l'a suggéré, vous pouvez également utiliser navigator.platform.

31
Shawn

Autant que je sache, la platform est la propriété la moins usurpée du navigateur Object . Vous pouvez l'utiliser pour obtenir des booléens.

var isMac = navigator.platform.toUpperCase().indexOf('MAC')!==-1;
var isWindows = navigator.platform.toUpperCase().indexOf('WIN')!==-1;
var isLinux = navigator.platform.toUpperCase().indexOf('LINUX')!==-1;

Si vous avez besoin de différencier les Mac entre l'ancien PowerPc et le nouvel Intel.

var isMacPpc=navigator.platform==="MacPPC";
var isMacIntel=navigator.platform==="MacIntel";

https://developer.mozilla.org/en/DOM/window.navigator.platform

13
Vitim.us

Essayer:

alert(navigator.appVersion);

Cela devrait vous donner une chaîne que vous pouvez analyser pour le système d'exploitation.

6
davecoulter
<script>

osName = 'Unknown';

function nav(x, y, z) {
    z = z || y;
    if (navigator[x] && navigator[x].indexOf(y) !== -1) {
        osName = z;
    }
}

/*   navigator     value     download  */
nav( "appVersion", "X11",    "UNIX"    );
nav( "appVersion", "Mac",    "MacOS"   );
nav( "appVersion", "Linux"             );
nav( "userAgent",  "Linux"             );
nav( "platform",   "Linux"             );
nav( "appVersion", "Win",    "Windows" );
nav( "userAgent",  "Windows"           );
nav( "platform",   "Win",    "Windows" );
nav( "oscpu",      "Windows"           );

document.getElementById("download"+osName).className = "knownOS";

</script>

Assurez-vous que le bon lien de téléchargement est facile à trouver, mais sans masquer les autres liens du système d'exploitation. Les gens pourraient toujours vouloir ceux-ci.

<style>

#downloadUNIX, #downloadMacOS, #downloadLinux, #downloadWindows {
    color:#6D94F2;
    line-height:35px;
    margin:24px 0 24px 0;
    padding:10px;
}
.knownOS {
    background-color:#F7ECAD !important;
    border:2px solid #E8913A;
    color:#133CC4 !important;
    font-weight:bold;
}

</style>

Et du html

<ul>
    <li><a id="downloadUNIX"    href="unix Link Here"   >Download Napster-9000 for UNIX</a></li>
    <li><a id="downloadWindows" href="windows Link Here">Download Napster-9000 for Windows</a></li>
    <li><a id="downloadMacOS"   href="mac os link here" >Download Napster-9000 for OS X</a></li>
    <li><a id="downloadLinux"   href="linux Link Here"  >Download Napster-9000 for Linux</a></li>
</ul>

Maintenant, l'utilisateur peut désactiver ou bloquer les javascripts s'il le souhaite. Les liens seront toujours là, par opposition à l'écriture des liens avec Javascript, qui nécessite javascript pour fonctionner.

Voici un violon

http://jsfiddle.net/7fmJb/

5
gaby de wilde

Vous pouvez utiliser cette fonction dans la fonction Document Ready. Ajoutez le code à l'intérieur de la fonction pour votre événement.

function checkOperatingSystem()
{
    var  userAgent = navigator.userAgent || navigator.vendor || window.opera;

    //Check mobile device is Android
    if (/Android/i.test(userAgent)) {
        //Add your Code here
    }

    //Check mobile device is IOS
    if (/iPad|iPhone|iPod/.test(userAgent) && !window.MSStream) {
        //Add your Code here
    }

    //Check device os is Windows (For Laptop and PC)
    if (navigator.appVersion.indexOf("Win")!=-1)
    {
        //Add your Code here
    }

    //Check device os is MAC (For Laptop and PC)
    if (navigator.appVersion.indexOf("Mac")!=-1)
    {
        //Add your Code here
    }  
}
1
Rohan Varma

Je pense que cela pourrait aider:

navigator.appVersion

Essayez de le consoler dans votre fichier JS . Par exemple:

console.log(navigator.appVersion);

Vous obtiendrez la plupart des informations concernant le système d'exploitation.

0
rahim.nagori