2011-01-04 2 views
1

Souvent, lorsque j'écris mon code JavaScript, je ne peux pas ébranler la paranoïa que certaines fonctions ou lignes de code vont casser dans ce navigateur ou ...Comment savoir si une fonction de langage JavaScript est prise en charge par un navigateur donné

Comment puis-je vérifier si le code que j'écris est compatible avec un navigateur x?

+1

Parlez-vous de la fonctionnalité de langue ou de la compatibilité API DOM? Pouvez-vous donner un exemple spécifique? – user113716

+0

Je pense que cette question est trop simpliste et large pour répondre adéquatement. Vous avez posé des questions sur les caractéristiques du langage, ce qui signifierait de nouvelles choses dans la langue réelle comme 'const', getters, et autres. Mais je pense que vous voulez dire les fonctionnalités DOM et BOM, comme 'document.activeElement', que les gens vous ont donné quelques indices. Mais il n'y a pas une seule réponse à tous vos besoins. L'idée de base est la détection de fonctionnalités (http://ejohn.org/blog/future-proofing-javascript-libraries/) par rapport à la détection du navigateur. Cependant, cela ne vous parlera pas des bugs dans les fonctionnalités, mais seulement de leur implémentation. –

Répondre

4

La détection de caractéristique de base peut être effectuée en interrogeant les propriétés de la fenêtre, par exemple window.XMLHttpRequest.

Dans certains cas, il devient beaucoup plus complexe que de simplement interroger des propriétés, car les méthodes définies peuvent être incompatibles entre elles. Dans ce cas, cela dépend vraiment du scénario, mais certaines fois vous devrez peut-être faire quelque chose d'aussi sale que de créer un élément décalé par rapport à l'écran, puis définir certaines propriétés et voir si ces modifications sont reflétées ou non.

Il serait probablement utile si vous avez spécifiquement donné des exemples de certains cas, car il y a littéralement des milliers de choses à détecter et pas tout est pareil.

0

Vous pouvez vérifier si la fonction de la fonction que vous souhaitez utiliser existe comme ceci:

if(functionOrObjectName) { 
    //will execute if the function or object is defined 
} 
+1

Cela provoquera une erreur si une variable ou une fonction n'est pas définie. 'typeof undefinedVar' retournera' 'undefined'' pour les variables et fonctions non définies. Ce que vous suggérez fonctionne si vous testez pour une propriété. Donc, pour tester les fonctions globales et vars (qui sont les accessoires de l'objet window), vous pouvez utiliser 'if (window.undefinedVar)' qui ne causera pas d'erreur –

0

Vous trouverez peut-être cette table test/compatibilité Site pratique: http://robertnyman.com/javascript/.

Vérifiez aussi has.js. Cela devrait simplifier un peu la détection des fonctionnalités.

Questions connexes