Existe-t-il une balise HTML qui n'affichera son contenu que si JavaScript est activé? Je sais que cela <noscript>
fonctionne à l'inverse, affichant son contenu HTML lorsque JavaScript est désactivé. Mais je voudrais n'afficher un formulaire sur un site que si JavaScript est disponible, en leur expliquant pourquoi ils ne peuvent pas utiliser le formulaire s'ils ne l'ont pas.
La seule façon dont je sais comment faire cela est d'utiliser la document.write();
méthode dans une balise de script, et cela semble un peu compliqué pour de grandes quantités de HTML.
javascript
html
noscript
Re0sless
la source
la source
display: none !important
, pour éviter qu'elle ne soit remplacée par des règles plus spécifiques (par exemple par des sélecteurs id ou css), qui sont destinées à son utilisation lorsque les scripts sont activés.<noscript>
la première fois que vous actualisez une page après avoir désactivé Javascript dans les préférences. Vous devez appuyer deux fois sur recharger pour le faire fonctionner.Je ne suis pas vraiment d'accord avec toutes les réponses ici concernant l'incorporation préalable du HTML et le masquage avec CSS jusqu'à ce qu'il soit à nouveau affiché avec JS. Même sans JavaScript activé, ce nœud existe toujours dans le DOM. Certes, la plupart des navigateurs (même les navigateurs d'accessibilité) l'ignoreront, mais il existe toujours et il peut y avoir des moments étranges où cela vous mord.
Ma méthode préférée serait d'utiliser jQuery pour générer le contenu. S'il y a beaucoup de contenu, vous pouvez l'enregistrer en tant que fragment HTML (juste le HTML que vous voudrez afficher et aucune des balises html, body, head, etc.) puis utiliser les fonctions ajax de jQuery pour le charger dans la page entière.
test.html
_test.html
résultat
la source
Tout d'abord, séparez toujours le contenu, le balisage et le comportement!
Maintenant, si vous utilisez la bibliothèque jQuery (vous devriez vraiment, cela rend JavaScript beaucoup plus facile), le code suivant devrait faire:
Cela vous donnera une classe supplémentaire sur le corps lorsque JS est activé. Désormais, en CSS, vous pouvez masquer la zone lorsque la classe JS n'est pas disponible et afficher la zone lorsque JS est disponible.
Vous pouvez également ajouter
no-js
comme classe par défaut à votre balise body et utiliser ce code:N'oubliez pas qu'il est toujours affiché si CSS est désactivé.
la source
J'ai une solution simple et flexible, un peu similaire à celle de Will (mais avec l'avantage supplémentaire d'être valide html):
Donnez à l'élément body une classe de "jsOff". Supprimez (ou remplacez) cela par JavaScript. Avoir CSS pour masquer tous les éléments avec une classe de "jsOnly" avec un élément parent avec une classe de "jsOff".
Cela signifie que si JavaScript est activé, la classe "jsOff" sera supprimée du corps. Cela signifiera que les éléments avec une classe de "jsOnly" n'auront pas de parent avec une classe de "jsOff" et ne correspondront donc pas au sélecteur CSS qui les cache, donc ils seront affichés.
Si JavaScript est désactivé, la classe "jsOff" ne sera pas supprimée du corps. Les éléments avec « jsOnly » auront un parent avec « jsOff » et ainsi se correspondent au sélecteur CSS qui les cache, ainsi ils seront cachés.
Voici le code:
C'est du html valide. C'est simple. C'est flexible.
Ajoutez simplement la classe "jsOnly" à tout élément que vous souhaitez afficher uniquement lorsque JS est activé.
Veuillez noter que le JavaScript qui supprime la classe "jsOff" doit être exécuté le plus tôt possible dans la balise body. Il ne peut pas être exécuté plus tôt, car la balise body n'y sera pas encore. Il ne doit pas être exécuté plus tard car cela signifiera que les éléments avec la classe "jsOnly" peuvent ne pas être visibles tout de suite (car ils correspondent au sélecteur CSS qui les cache jusqu'à ce que la classe "jsOff" soit supprimée de l'élément body).
Cela pourrait également fournir un mécanisme pour le style js uniquement (par exemple
.jsOn .someClass{}
) et le style non js uniquement (par exemple.jsOff .someOtherClass{}
). Vous pouvez l'utiliser pour fournir une alternative à<noscript>
:la source
Vous pouvez également utiliser Javascript pour charger le contenu d'un autre fichier source et le sortir. C'est peut-être un peu plus de boîte noire que ce que vous recherchez.
la source
Voici un exemple de la méthode div cachée:
(Vous devrez probablement le modifier pour un pauvre IE, mais vous voyez l'idée.)
la source
Ma solution
.css:
.js:
.html:
la source
L'article d'Alex vient à l'esprit ici, mais il n'est applicable que si vous utilisez ASP.NET - il pourrait cependant être émulé en JavaScript, mais encore une fois, vous devrez utiliser document.write ();
la source
Vous pouvez définir la visibilité d'un paragraphe | div sur «masqué».
Ensuite, dans la fonction «onload», vous pouvez définir la visibilité sur «visible».
Quelque chose comme:
<body onload = "javascript: document.getElementById (rec) .style.visibility = visible"> <p style = "visibilité: visible" id = "rec"> Ce texte doit être masqué sauf si javascript est disponible. </p>
la source
Il n'y a pas de balise pour ça. Vous devrez utiliser javascript pour afficher le texte.
Certaines personnes ont déjà suggéré d'utiliser JS pour définir dynamiquement CSS visible. Vous pouvez également générer dynamiquement le texte avec
document.getElementById(id).innerHTML = "My Content"
ou créer dynamiquement les nœuds, mais le hack CSS est probablement le plus simple à lire.la source
Dans la décennie qui a suivi cette question, l'
HIDDEN
attribut a été ajouté au HTML. Il permet de masquer directement des éléments sans utiliser de CSS. Comme pour les solutions basées sur CSS, l'élément doit être non masqué par un script:la source