52 votes

Vérifiez si JavaScript est activé avec PHP

Est-il possible de vérifier si JavaScript est activé avec PHP? Si c'est le cas, comment?

69voto

Osiname Points 511

peut-être une option plus simple ...

 <html>
<body>
<noscript>
  This page needs JavaScript activated to work. 
  <style>div { display:none; }</style>
</noscript>
<div>
my content
</div>
</body>
</html>
 

50voto

Waleed Amjad Points 3952

Non, ce n'est pas possible, car PHP est un langage côté serveur, il n'accède en aucune manière au navigateur du client (les demandes du client émanant du serveur PHP).

Le client peut fournir des méta-informations via des en-têtes HTTP, mais il ne vous dit pas nécessairement si l'utilisateur a JavaScript activé ou non et vous ne pouvez pas vous en remettre à eux de toute façon,

19voto

Chris Thompson Points 18375

Techniquement non car, comme l'ont dit d'autres réponses, PHP est strictement côté serveur, mais vous pouvez le faire ...

Dans la page PHP sur le serveur, la sortie (beaucoup de HTML a été supprimé pour des raisons de brièveté)

 <html>
   <head>
      <script type="text/javascript" src="jquery1.4.4.js"></script>
      <script type="text/javascript">
        $(document).ready(function(){
           $.get("myPage.php");
         });
      </script>
   </head>
 </html>
 

Puis, dans myPage.php définissez une variable de session pour indiquer que le client prend en charge JS.

 <?php
   session_start();
   $_SESSION['js'] = true;
?>
 

Mais vraiment, utilisez simplement les balises <script></script><noscript></noscript> , beaucoup moins d'effort ...

11voto

Salman Akhlaqi Points 61

// Voici une solution: // ça marche parfaitement

 <?php

if(!isset($_SESSION['js'])||$_SESSION['js']==""){
  echo "<noscript><meta http-equiv='refresh' content='0;url=/get-javascript-status.php&js=0'> </noscript>";
   $js = true;

 }elseif(isset($_SESSION['js'])&& $_SESSION['js']=="0"){
   $js = false;
   $_SESSION['js']="";

 }elseif(isset($_SESSION['js'])&& $_SESSION['js']=="1"){
   $js = true;
   $_SESSION['js']="";
}

if ($js) {
    echo 'Javascript is enabled';
 } else {
    echo 'Javascript is disabled';
}

?>
 

// Et ensuite dans get-javascript-status.php:

 $_SESSION['js'] = isset($_GET['js'])&&$_GET['js']=="0" ? "0":"1";
header('location: /');
 

7voto

Juan Mendes Points 31678

Vous ne pouvez pas dire si un navigateur a JS activé, mais vous pouvez dire si le navigateur prend en charge JS http://php.net/manual/en/function.get-browser.php

$js_capable = get_browser(null, true)=>javascript == 1

Cela dit, ce n'est probablement pas d'une grande utilité. Vous devriez reconsidérer la détection de JS à partir de PHP. Il devrait y avoir aucun besoin si vous utilisez d'amélioration progressive, ce qui signifie que JS seulement ajoute de la fonctionnalité de ce qui est déjà sur la page.

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