PRATIQUE CLIENTS WEB 
Tester le support JavaScript
 
"Comment puis-je connaître les capacités JavaScript du navigateur en cours ?" (22/06/2005)
  Forum

Réagissez dans les forums de JDN Développeurs

Après les années noires du DHTML et des scripts plus superficiels qu'utiles, le langage JavaScript revient en grâce avec le besoin d'applications avancées fonctionnant dans le navigateur, et l'effet de mode des méthodes HTTPRequest. Nombre de scripts sont aujourd'hui créés pour faire usage des techniques avancées de JavaScript.

Seulement, le support de JavaScript est disparate, de la même manière que celui de XHTML et CSS varie d'un navigateur à l'autre, et selon les versions. Les méthodes de détéction de navigateur sont aujourd'hui maîtrisées, et la reconnaissance de JavaScript pour chaque navigateur est connue, mais il reste inadéquat de combiner ces deux savoirs dans l'optique de découvrir le support JavaScript dudit navigateur.

Principales raisons : impossibilité de reconnaître tous les navigateurs existants (certains petits navigateurs peuvent très bien disposer d'un excellent support JS), et manque de pérennité d'un tel test (la prochaine version d'un navigateur pourra être optimale mais non reconnue).

De même, il est coutume de spécifier la version de JavaScript devant appliquer un script, comme suit :
<script language="javascript1.2" type="text/javascript">
<script language="javascript1.5" type="text/javascript">

Là encore, cette technique n'est pas recommandée : différents navigateurs implémentent différentes version de JS, et la nécessité de doubler la taille des codes JS d'une page rendent l'approche inapte à une productivité à long terme.

La seule méthode certaine de fonctionner est le test de l'existence même des fonctionnalités au sein du navigateur, puis la redirection vers une fonction adaptée dans le cas contraire. Ainsi, si le script a besoin de lancer la méthode getElementById(), il faudra d'abord tester son existence :
if (document.getElementById) { ... }

Plus largement, si on souhaite faire appel aux fonctionnalités avancées du DOM, il faudra tester l'existence de celles-ci : if (document.getElementById && document.createElement) { ... }
 
Xavier Borderie, JDN Développeurs
 
 
Accueil | Haut de page