Page 1 sur 1

Detection de javascript

Posté : 06 août 2006, 16:42
par bunk
Bonjour,

je veux declarer une variable si le javascript est innactif, je comprend bien que cela ne peux ce faire que en javascript (coté client) donc en fait si j'ecris :

Code : Tout sélectionner

<NOSCRIPT> <br /> <div style="text-align: center; width: 80%; background-color: red; border: 2px solid black; padding: 10px 0px 10px 10px; margin-left: auto; margin-right: auto;"> <span class="erreur"><img src="../../../images/erreur_rouge.png" alt="Image : Erreur grave" style="vertical-align: middle;" /> Le javascript est désactivé, vous devez l'activer pour continuer.</span> </div> <br /> </NOSCRIPT>
ca s'affiche bien si javascript est innactif.
si j'ecris :
<NOSCRIPT>
<br />
<div style="text-align: center; width: 80%; background-color: red; border: 2px solid black; padding: 10px 0px 10px 10px; margin-left: auto; margin-right: auto;">
<span class="erreur"><img src="../../../images/erreur_rouge.png" alt="Image : Erreur grave" style="vertical-align: middle;" /> Le javascript est désactivé, vous devez l'activer pour continuer.</span>
<?php
$erreur = '<br /><br />';
$erreur .= '<img src="../../../images/erreur_rouge.png" alt="Image : Erreur grave" style="vertical-align: middle;" />';
$erreur .= ' <span style="font-weight: bold; color: red;">Vous devez activer le javascript pour continuer</span>';
$erreur .= '<br />';

$erreur2 = '<br /><br />';
$erreur2 .= '<img src="../../../images/erreur_rouge.png" alt="Image : Erreur grave" style="vertical-align: middle;" />';
$erreur2 .= ' <span style="font-weight: bold; color: red;">Vous devez activer le javascript pour continuer</span>';
$erreur2 .= '<br />';
?>
</div>
<br />
</NOSCRIPT>
et bien mes variable $erreur et $erreur2 sont toujours activent.

Y'a t'il un moyen de faire autrement ?
En esperant m'être bien ecrit

D'avance merci

Posté : 06 août 2006, 17:24
par Ryle
Dans la mesure ou php est exécuté sur le serveur et donc avant le javascript, il va lire et exécuter tout ton code (y compris la partie entre noscript) et tes variables php seront donc forcément définies.

Pour détecter si le javascript est activé ou non il faudrait passer par une première page qui ferait le test du noscript et redirigerait (avec un meta-refresh) vers ton site en passant un paramètre différent selon si js est actif ou non, mais je ne sais pas vraiment si c'est réalisable.

Sachant qu'aujourd'hui, le js est actif par défaut sur tous les navigateurs et qu'il y a moins de 5% des internautes qui le désactivent... Ca vaut peut être pas la peine de s'embêter pour eux, sachant que si le site les interesse ils le réactiveront pour pas être gênés ;)

Posté : 07 août 2006, 17:13
par goeb
si tu appelles ta page par un lien (href par exemple), tu peux donner l'information javascript-ou-pas dans un paramètre du lien.
du genre (mon code est bancal et peut-être faux ; je veux seulement montrer l'idée) :

Code : Tout sélectionner

<script> document.write('<a href="toto.php?javascript=yes">...</a>'); </script> <noscript> <a href="toto.php?javascript=no">...</a> </noscript>

Re: Detection de javascript

Posté : 11 mai 2014, 17:16
par wng
Une solution pour toi pour vérifier l'existence de Javascript via PHP
<body onload="document.cookie='javascript=1';" >
if(isset($_COOKIE['javascript'])) {
...
}

EDIT :
// ou encore pour réutiliser la variable dans tout ton contenu web :
$js = (isset($_COOKIE['javascript'])) ? true : false;

if($js) {
...
}

Re: Detection de javascript

Posté : 11 mai 2014, 22:59
par moogli
Attention ne fonctionnera pas au premier affichage.

Sinon 8ans après j'espère qu'il a trouvé une solution avant ;)

@+

Re: Detection de javascript

Posté : 12 mai 2014, 23:15
par wng
Pas vue la date :/ cela aidera sans doute quelqu'un d'autre :)

Au passage pour que cela soit effectif dès la première application pour complémenter ce que dit @moogli il faut soit forcer la page de connexion ( en première vue ) pour générer le cookie puis le rendre valide dans le contenu après connexion.

Soit ( encore moins propre ) forcer un refresh lors de la première visite ...