5568 sujets

Sémantique web et HTML

Bonjour à vous Smiley smile

Je vais vous poser une question qui me turlupine depuis un moment.
Je connaissais déjà les commentaires <!-- et -->, qui permettent de marquer des choses qui ne seront pas traités par le mode de rendu du navigateur.
Ces <!-- et --> permettent aussi de mettre des commentaires conditionnels, que je n'utilise que très rarement.

Pourtant je les vois, de temps en temps, utilisés pour du javascript, ou du CSS, de la manière suivante:
<style type="text/css">
<!--
    @import url("styles.css"); 
-->
</style>


Je suppose que c'est pour éviter que certains vieux navigateurs les lise, mais je n'en suis pas sûr. Peut-on me confirmer ? Si oui, avez-vous plus de détails sur les navigateurs qui comprennent et ne comprennent pas ce code?

Je vous remercie d'avance Smiley cligne

(désolé si la question est dans la fac ou dans le forum, mais il n'est pas facile de faire des recherches avec ces caractères, du moins je n'ai pas trouvé...)
Sylvain a écrit :
Je suppose que c'est pour éviter que certains vieux navigateurs les lise, mais je n'en suis pas sûr. Peut-on me confirmer ?

C'est bien le cas, mais je ne sais pas exactement quels versions d'IE ou de Netscape cela peut viser... versions qui, à mon avis, ne sont plus du tout utilisées aujourd'hui (même si, techniquement, il doit y avoir moyen de trouver deux ou trois utilisateurs pour chacune de ces versions, quelque part sur la planette...).

Bref, personnellement et en 2006 je m'en passe, mais comme on dit « ça fait pas de mal ».
Ah, enfin une réponse à cette question que je me pose depuis longtemps Smiley ravi Merci pour ces précisions, je sais désormais qu'il n'est plus nécessaires d'ajouter ces faux commentaires dans la balise style.
En plus, cette méthode peut poser problème si la page est servie avec le type mime application/xhtml+xml (puisqu'un vrai parseur XML ne prend pas en compte les commentaires).
Modérateur
Oui, à ce propos, pour l'affichage des styles dans la page, il me semble qu'il vaut mieux se servir de :
<style type="text/css">/*<![CDATA[*/

/*]]>*/</style>

et pour les scripts :
<script type="text/javascript">//<![CDATA[

//>]]></script>
C'est ce que j'ai d'adopté pour ma part...
Modifié par koala64 (25 Oct 2006 - 14:59)
koala64 a écrit :
Oui, à ce propos, pour l'affichage des styles dans la page, il me semble qu'il vaut mieux se servir de :
<style type="text/css">/*<![CDATA[*/

/*]]>*/</style>

et pour les scripts :
<script type="text/javascript">//<![CDATA[

//>]]></script>
C'est ce que j'ai d'adopté pour ma part...

J'ai souvent vu ce fameux /*<![CDATA[*/ sans vraiment savoir ce que ça signifiait, pourrais-tu éclairer ma lanterne?
Bon, ben, merci à vous, c'est bien ce qui me semblait. Je ne les ai jamais utilisé, et je suppose que je ne les utiliserai jamais (surtout que c'est énervant, mon notepad2 grise tout ce qu'il considère comme un commentaire).

Merci infiniment Smiley smile
Mettre en commentaire et/ou en CDATA un script permet aussi de ne pas faire hurler le validator lorsqu'on y manipule des fragments de HTML.

Par exemple ça, tout bêtement :

<script type="text/javascript">
document.getElementById('monelem').innerHTML = "<p>Test</p>";
</script>
Bonsoir Smiley smile

En prime, <![CDATA[ est reconnu par XML, et par les parseurs DOM et SAX.
Cette notation sert (si ma doc ne date pas) à indiquer au navigateur que c'est une chaine HTML, avec du code dedans, et qu'il va devoir l'executer, et pas parser/interpréter.
Par exemple, si on fait :
<?xm version="1.0" encoding="utf-8"?>
<global>
  <show><strong>H</strong>ello World</show>
</global>

Un parseur normal va découper selon <global>, <show> et <strong>.
Mais nous, on veut qu'il affiche le H de Hello World en gras, et pas comme un tag à parser.
Donc c'est là que le <![CDATA intervient Smiley smile
<?xml version="1.0" encoding="utf-8"?>
<global>
  <show><![CDATA[<strong>H</strong>ello World]]><show>
</global>

et ici, il ne va pas parser <strong>, il va "formater" la chaine de caractère en "chaine HTML"

j'espère avoir été clair Smiley smile

en espérant vous avoir rendu service Smiley cligne
Il faut bien comprendre qu'une section CDATA n'est en rien une solution miracle. Ca ne fait que décaler le problème, car si votre script ou style contient la chaîne de caractères "]]>", le parser considèrera bien évidemment celà comme la fin de la section. L'idéal est d'externaliser tout ce qui peut l'être.
Pour sûr, c'est vrai !
Mais desfois, on doit faire le choix entre ressources et practicité, et j'ai du une fois mettre des <![CDATA (pour un RSS), mais si on arrive à en devoir en mettre, c'est que le problème a été mal posé j'imagine. Dans certain cas bien sûr, je ne généralise pas Smiley smile
IL n'est que très peu probable qu'on trouve ]]> dans un script javascript.
Au pire il suffit d'ajouter un espace entre les crochets et le >. En principe, c'est sans incidence.
Sinon s'il est inclus dans une chaîne (par contre peut-être possible si on envoie du XML avec AJAX) , utiliser la traditionnelle astuce qui marche pour une chaîne contenant </script> (même problème, le navigateur comprend qu'il s'agit de la fin du script) : chaine = "</scr" + "ipt>";