dimanche 25 octobre 2009

Détecter la présence du support du javascript

Il est parfois nécessaire de savoir si le navigateur qui va télécharger notre page gère ou non le javascript. Il y a la balise HTML <noscript> qui permet d'exécuter un code particulier au cas où le navigateur ne supporterait pas le langage de script, mais ce code est exécuté coté client, et donc on a aucune information coté serveur. L'idée est de forcer le navigateur à faire une requête HTTP différente s'il supporte le javascript ou s'il ne le supporte pas. En fonction de la requête que l'on reçoit, on pourra adapter le contenu de notre site. Pour faire une requête automatique en HTML (sans utiliser le javascript), il faut utiliser cette requête :
<meta http-equiv="refresh" content="2,ma_page.php?js=0">
Cette requête dit que dans 2 secondes, il faudra charger la page ma_page.php?js=0. Pour faire une requête automatique en Javascript, il faut utiliser cette requête :
window.location = "ma_page.php?js=1"
Au final, en envoyant la page html suivante au navigateur, on peut détecter si le navigateur supporte ou non le langage de script.
<html>
  <head>
    <meta http-equiv="refresh" content="2,ma_page.php?js=0">
  </head>
  <body>
    <script type="text/javascript">
      windows.location = "ma_page.php?js=1";
    </script>
  </body>
</html>
S'il ne le supporte pas, le code javascript ne sera pas exécuté et donc 2 secondes après le chargement de la page, une requête sera faite sur ma_page.php avec un paramètre js à 0. S'il le supporte, le code javascript sera directement exécuté avec en conséquence un appel à la page ma_page.php avec un paramètre js à 1, sans que la redirection HTML ait le temps de se faire. Cette méthode peut être fort utile pour éviter d'envoyer un code javascript qui ne sera de toute façon pas exécuté... ;)

Aucun commentaire:

Enregistrer un commentaire