Quelle est la meilleure façon de détecter le support du support Web en utilisant Javascript?

J'essaie d'utiliser Javascript pour détecter si un navigateur Web prend en charge les websockets, mais en utilisant uniquement la détection par fonctionnalité, j'ai des faux positifs, j'ai donc ajouté un test d'agent utilisateur pour jeter les périphériques Android à la place, ce que je ne suis pas Content à propos. J'ai un Samsung Galaxy Tab 2, et voici mon code de détection:

var isSupported = (("WebSocket" in window && window.WebSocket != undefined) || ("MozWebSocket" in window)); /* This line exists because my Galaxy Tab 2 would otherwise appear to have support. */ if (isSupported && navigator.userAgent.indexOf("Android") > 0) isSupported = false; if (isSupported) document.write("Your browser supports websockets"); else document.write("Your browser does not support websockets"); 

Ce code semble fonctionner avec IE, Firefox, Safari (y compris iPhone / iPad) et Chrome. Cependant, la vérification fondée sur les fonctionnalités revient true lorsque j'utilise le navigateur par défaut de mon Samsung Galaxy Tab 2, ce qui est incorrect car ce navigateur ne prend pas en charge les fonctionnalités Web. En outre, je ne sais pas combien d'autres appareils Android ont ce même problème, donc, pour le moment, c'est la meilleure solution dont je suis au courant pour la détection.

  • L'invalidation d'une vue personnalisée provoque toutes les vues personnalisées dans un groupe de vues à invalider?
  • Vérifiez si le fichier existe sur la carte SD sur Android
  • Fermeture forcée d'une application avec un service: onDestroy () n'est pas appelé en service?
  • Plus d'espace entre les lignes dans TextView
  • Comment comprendre la structure du répertoire de l'arbre racine Android?
  • Changer la forme de l'image dans Android
  • Existe-t-il un meilleur moyen de détecter le support du support Web autre que ce que je fais? Je me rends compte que des solutions de rechange existent pour Android, comme l'utilisation d'un navigateur différent, ce qui signifie que mon code de détection d'agent utilisateur tel quel ne serait pas une bonne chose. Mon objectif est de ne pas compter sur l'agent utilisateur en premier lieu.

    Aucune suggestion?

  • Que se passe-t-il lorsque je lance une alarme deux fois?
  • Installation du pilote USB Android dans Windows 7
  • Ajout de marqueurs de l'URL avec Picasso
  • FileTransfer.upload () lance le code d'erreur de lancement 3 sur Android
  • Le choix de l'intention Android semble lent
  • Comment créer un objet JMS imbriqué en Java?
  • 4 Solutions collect form web for “Quelle est la meilleure façon de détecter le support du support Web en utilisant Javascript?”

    C'est la solution la plus courte et utilisée par Modernizr. Ajoutez simplement ceci à votre code

     supportsWebSockets = 'WebSocket' in window || 'MozWebSocket' in window; 

    Alors vous pouvez l'utiliser en cours d'exécution

     if (supportsWebSockets) { // run web socket code } 

    Je pense que la bibliothèque Modernizr est ce que vous recherchez: http://modernizr.com/

    Une fois que vous avez inclus la bibliothèque sur votre page, vous pouvez utiliser une simple vérification comme:

     if(Modernizr.websockets){ // socket to me baby } 

    Après avoir lu la réponse de @ gzost … J'ai commencé à bricoler … car rien d'autre ne peut détecter correctement les WS sur mon téléphone Android … même si websocket.org dit que je l'ai, mais ne parvient pas à me connecter.

    Quoi qu'il en soit, essayez cette solution de contournement … semble le détecter correctement sur / désactivé avec chrome, FF, safari et le navigateur Android par défaut.

     var has_ws=0; function checkWebSocket(){ try{ websocket = new WebSocket("ws:websocket.org"); websocket.close(''); }catch(e){ //throws code 15 if has socket to me babies has_ws=1; } } $(document).ready(function(){ checkWebSocket(); }); 

    Cette page vient en haut dans la recherche Google.

    En 2016, couper la moutarde pour l'implémentation moderne de WebSockets (pas de préfixes tels que MozWebSocket ) serait

     if ( 'WebSocket' in window && window.WebSocket.CLOSING === 2 ) { // supported } 

    http://www.w3.org/TR/websockets/#the-websocket-interface

    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.