82 votes

Comment détecter un appareil mobile avec javascript?

J'ai été invité à créer une réelle page HTML / javascript pour simuler la détection des périphériques mobiles (iphone/ipad/android) à l'aide de code javascript. Ce sera ensuite prendre l'utilisateur pour un autre écran qui vous demande de leur adresse e-mail.

84voto

Baraa H Points 56

Je sais que cette réponse est venue 3 ans de retard, mais aucune des autres réponses sont en effet 100% de réponses correctes. Si vous souhaitez détecter si l'utilisateur est sur TOUT type d'appareil mobile (Android, iOS, BlackBerry, Windows Phone, Kindle, etc.), ensuite, vous pouvez utiliser le code suivant:

if (/Android|webOS|iPhone|iPad|iPod|BlackBerry|BB|PlayBook|IEMobile|Windows Phone|Kindle|Silk|Opera Mini/i.test(navigator.userAgent)) {
    // Take the user to a different screen here.
}

28voto

slandau Points 6710

Vous permettrait de détecter le requérant navigateurs chaîne de l'agent utilisateur, et ensuite décider en fonction de ce qu'elle est si elle est à venir à partir d'un navigateur mobile ou pas. Cet appareil n'est pas parfait et ne le sera jamais en raison du fait que les agents utilisateurs ne sont pas normalisés pour les appareils mobiles (au moins pas à ma connaissance).

Ce site va vous aider à créer le code: http://www.hand-interactive.com/resources/detect-mobile-javascript.htm

Exemple:

Vous pourriez obtenir de l'agent utilisateur en javascript en faisant ceci:

var uagent = navigator.userAgent.toLowerCase();

Et puis faire le chèque est dans le même format que ce (juste en utilisant l'iPhone comme un exemple rapide, mais d'autres devraient être un peu différent)

function DetectIphone()
{
   if (uagent.search("iphone") > -1)
      alert('true');
   else
      alert('false');
}

Modifier

Vous pouvez ainsi créer une simple page HTML comme ceci:

<html>
    <head>
        <title>Mobile Detection</title>
    </head>
    <body>
        <input type="button" OnClick="DetectIphone()" value="Am I an Iphone?" />
    </body>
</html>
<script>
    function DetectIphone()
    {
       var uagent = navigator.userAgent.toLowerCase();
       if (uagent.search("iphone") > -1)
          alert('true');
       else
          alert('false');
    }
</script>

21voto

jAndy Points 93076

Une jolie solution simple est de vérifier pour la largeur de l'écran. Depuis presque tous les appareils mobiles ont un max largeur de l'écran de 480px (à l'heure actuelle), c'est assez fiable:

if( screen.width <= 480 ) {
    location.href = '/mobile.html';
}

La chaîne de l'agent utilisateur est également un endroit à regarder. Cependant, la première solution est encore mieux car même si certains flipper périphérique ne répond pas correctement pour que le user-agent, la largeur de l'écran ne ment pas.

La seule exception ici sont tablette comme l'ipad. Ces appareils ont une plus grande largeur de l'écran de smartphones et je serais probablement aller avec le user-agent-string pour ceux.

17voto

Ahmed Abu Eldahab Points 759
if(navigator.userAgent.match(/iPad/i)){
 //code for iPad here 
}

if(navigator.userAgent.match(/iPhone/i)){
 //code for iPhone here 
}


if(navigator.userAgent.match(/Android/i)){
 //code for Android here 
}



if(navigator.userAgent.match(/BlackBerry/i)){
 //code for BlackBerry here 
}


if(navigator.userAgent.match(/webOS/i)){
 //code for webOS here 
}

8voto

kolypto Points 3161
var isMobileDevice = navigator.userAgent.match(/iPad|iPhone|iPod/i) != null 
    || screen.width <= 480;

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X