Pages :
Bonjour,
je suis tout nouveau parmi vous et voici ma première question :

j'ai réalisé tout un code pour le menu de mon site qui est le suivant :
https://www.accessibiliteprogrammes.fr

Mais je bloque sur un truc sûrement très simple :
comment masquer le contenu d'une région si JavaScript est désactivé et l'afficher quand JS est activé?

Merci beaucoup d'avance.
Bonjour,

Lorsque Javascript est désactivé, tout ce qui est inclus entre les balises <script> est ignoré.

A l'inverse, tout ce qui inclut dans les balises <noscript> s'affiche.

Il faut composer avec ceci pour adapter l'affichage de tes éléments suivant la situation.
connecté
Administrateur
miklhcos a écrit :
comment masquer le contenu d'une région si JavaScript est désactivé et l'afficher quand JS est activé?


Le principe général est :

<div style="display:none" id="truc"></div>


<script>document.getElementById('truc').style.display='block';</script>


(améliorable avec des classes, etc.)
Re,
merci beaucoup, la deuxième solution marche à merveille.

Bon, j'enchaîne avec une autre question :

dans ce code :

<ul>
<li><a href="#menusite">Retourner au menu général du site</a></li>
<li id=zzzz"><a href="#horloge">Accéder à l'horloge du site</a></li>
<li><a href="#infos">Informations sur vous</a></li>
<li><a href="#conteur">Voir le nombre de visiteurs de ce site</a></li>
</ul>
<noscript for="zzzz">
<p>Vous devez avoir JavaScript d'activé pour bénéficier de la fonction du site vers laquelle ce lien renvoie.</p>
</noscript>


le W3C trouve des erreurs par rapport au for de noscript.
Mais le problème est que si je le met directement dans ma liste de liens il n'est pas content non plus.

Alors, que faire ?

Merci.
Parce que je me suis dis que si non il ne saurait pas à quel lien il doit se référer.
Il ne doit pas se référer à tous les liens mais juste à celui parlant de l'horloge.

D'où ma question de comment faire Smiley smile
Comme le souligne Zelena, "for" est un attribut qui ne s'utilise qu'exclusivement dans les formulaires. Plus particulièrement sur les balises <label>.
Cet attribut (for) sert à lier une légende à un champ de formulaire ; soit un label avec un input/textarea.

Et c'est la sa seule utilité !


Dans ton cas, ce qui rend mécontent le validateur du W3 est qu'une liste ne peut contenir ce genre de balise (noscript).

C'est pourquoi, pour ce cas précis, il va falloir te tourner vers une alternative.

L'idée est de faire le menu sans les liens qui renvoient vers du JS.
Puis, en Javascript, insérer dans le DOM le/les liens concernés.


La suite est hors de mes compétences mais l'idée est là.
Modifié par Greg_Lumiere (27 Jun 2016 - 11:21)
En ce cas, l'idée de dew me parait plus judicieuse...

Smiley smile

Edit : On peut aussi injecter les liens par Javascript comme dit Greg_Lumiere
Modifié par Zelena (27 Jun 2016 - 11:31)
miklhcos a écrit :
Ok, alors comment dois-je procéder svp?

Merki Smiley smile


Pour la solution de dew, il faut suivre son exemple.

Smiley smile
Re,
certe, mais le W3C n'aime toujours pas ça.... Smiley decu
Je cite :
1.
Error: Element div not allowed as child of element ul in this context. (Suppressing further errors from this subtree.)
From line 52, column 1; to line 52, column 40
</a></li>?<div style="display:none" id="agent007">?<li><

voici le code :
<ul>
<li><a href="#menusite">Retourner au menu général du site</a></li>
<div style="display:none" id="agent007">
<li><a href="#horloge">Accéder à l'horloge du site</a></li>
</div>
<li><a href="#infos">Informations sur vous</a></li>
<li><a href="#conteur">Voir le nombre de visiteurs de ce site</a></li>
</ul>
<script>document.getElementById('agent007').style.display='block';</script>



que faire pleaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaase?
Il ne faut pas rajouter de divs : ce sont les éléments que l'on veut masquer qui doivent... subir ce traitement. A savoir le 'li' qui contient le lien vers l'horloge...
Décidément, j'ai pas de chance aujourd'hui.
Voici ce que j'ai fais :
<ul>
<li><a href="#menusite">Retourner au menu général du site</a></li>
<li><a id="agent007" href="#horloge">Accéder à l'horloge du site</a></li>
<li><a href="#infos">Informations sur vous</a></li>
<li><a href="#conteur">Voir le nombre de visiteurs de ce site</a></li>
</ul>
<script>document.getElementById('agent007').style.display='block';</script>
</div>

mais, ça plaît au W3C certe, mais ça ne fonctionne pas.

Où me suis-je trompé por favor?
Au moins t'as cherché...

Malheureusement, comme t'es là partis, c'est droit dans le mur.

Pour reprendre...
Quelque-part dans ta page tu as un menu, un peu comme celui-ci:
<ul class="mon_menu">
 <li>
  <a>Premier lien permanent</a>
 </li>
 <li>
  <a>Second lien permanent</a>
 </li>
</ul>
Jusque là c'est ta liste de lien avec uniquement les liens permanents (pas de 007 ici).
Tu remarquera que j'ai apposé une classe "mon_menu" au dit menu.

Maintenant, tu vas travailler en Javascript. Ton JS sera placé dans une balise <script> ton code ici </script>.
Tu vas procéder ainsi :
1 - parcours du DOM à la recherche de UL.mon_menu (voir commentaire de Dew)
2 - Une fois trouvée le ul, compter le nombre de LI enfants de cet UL
3 - Pour chaque lien à insérer, déplacer le 'curseur' dans le DOM à la position souhaitée pour l'insertion et insérer effectivement le lien ; soit insérer :
<li><a class="007">Mon lien vers éléments JS</a></li>

Donc pour 1 je te renvoi vers le commentaire de Dew qui va te permettre de trouver dans le DOM UL.mon_menu.
Pour 2, en JS je ne connais pas les instructions que tu peux utiliser.
Et pour 3 il existe innerHTML qui est une instruction permettant de rajouter du contenu en html (il y en a d'autre, renseigne-toi quand à déterminer la plus appropriée).


Fonctionnement...
Donc que va-t-il se passer une fois ceci codé ?
Cas JS activé :
- Le menu se charge sous sa forme la plus svelte
- Le JS est activé chez le client donc le script est exécuté, l'assertion dans le menu est effectuée.
Résultat: un menu gonflé aux hormones.

Cas JS désactivé :
- Le menu se charge dans sa forme a plus svelte
- JS est désactivé donc le script n'est pas exécuté. Le menu n'est pas modifié.
Résultat: le menu reste à son état primaire

Vu que tu as été capable de trouver le validateur du W3C, j'ai toute confiance en ta capacité à trouver les bouts de code qui te manquent.

Bon courage !
Smiley smile
Ok, parcontre je m'occuperai de ça demain, trop fatiguant de chercher du code ce soir Smiley smile

nen revanche j'ai une dernière question pour aujourd'hui, qui est bien plus simple à résoudre je pense.

La voici :
j'ai voulu faire un truc qui affiche le navigateur utilisé par mon visiteur.
J'ai donc mis le code suivant :
<?php
$add = ['$browser'];
echo "Vous utiliser le navigateur suivant: $add";
?>

mais ça n'affiche pas le navigateur, ça affiche Vous utiliser le navigateur suivant : Array.

Que faire?

Merkiiiiiiiii.
Tu peux me dire où tu as trouvé ceci ?
miklhcos a écrit :
['$browser']

C'est du code magique ??? Smiley eek

Renseigne-toi sur la détection du user-agent en php. Avec ces mots-clés tu verras que finalement ta question n'est pas si simple et la mise en application risque fort, elle aussi, d'être reportée. Smiley langue
Le $browser je l'ai trouvé sur OpenClassRoom, et à pleins d'autres endroits on le trouve Smiley smile

Mais en cherchant je trouve rien qui explique autre chose que ça.

Alors, comment doit-on procéder?

Merki (:| ;(
Ton bout de code ésotérique me semble soit mal recopié soit sortit d'un contexte fort particulier défini en amont du code que tu as vu. (De où on défini une variable par la clé d'un array anonyme ?!)

En tout cas avec ça tu n'es pas sortis de l'auberge.


Je n'aime pas trop ça mais pourtant là tu m'oblige:
Greg_Lumiere a écrit :
Renseigne-toi sur la détection du user-agent en php.
Faille-t-il te faire un lien ?
Modifié par Greg_Lumiere (27 Jun 2016 - 18:46)
Rerere,

ah, trouvé :

<?php
echo $_SERVER['HTTP_USER_AGENT'];
?>


mais, comment je fais si je veux retirer tout son baratin du début et n'afficher que la fin, par exemple ici Firefox 47.0 ?

Merci.
Bonjour bonjour,

j'ai trouvé qu'on pouvait afficher seulement ce que je veux, la dernière partie du truc en utilisant un truc appelé un explode.

Savez-vous comment on fait, il n'y a aucun exemple sur le net Smiley decu

Merkiiii.
Pages :