5568 sujets

Sémantique web et HTML

Bonjour à tous.

J'ai entrepris récemment de placer directement dans le bloc <head>de mes pages HTML le contenu de fichiers .js auparavant pointés par des <script src="...">. Malheureusement, le validateur du W3C me renvoie des erreurs sous prétexte que mon code js utilise des & et des <...

Voici la déclaration actuelle (non validée, donc...) :

<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Strict//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd'>
<html xmlns='http://www.w3.org/1999/xhtml' xml:lang='fr' lang='fr'>
<head>
<meta http-equiv='content-type' content='text/html; charset=iso-8859-1' />
<meta http-equiv='Content-Style-Type' content='text/css' />
<meta http-equiv='Content-Script-Type' content='text/javascript' />
<script type='text/javascript'><!--
function HMenuItems() {
/* du code javascript avec des opérateurs logiques && ou des opérateurs de comparaison <... */
}
--></script>
etc...


Je suis un peu étonné de voir que le validateur interprète comme du XHTML le contenu textuel d'un noeud <script> Smiley eek mais j'imagine qu'il y a moyen de modifier mes déclarations pour qu'il comprenne de quoi il s'agit. La question est donc : comment ?
Modifié par Herode (26 Sep 2007 - 17:30)
Salut,
Herode a écrit :
J'ai entrepris récemment de placer directement dans le bloc <head>de mes pages HTML le contenu de fichiers .js auparavant pointés par des <script src="...">.

C'est hors-sujet, mais pourquoi ?

Le validateur ne devrait pas te renvoyer d'erreur si ton code JavaScript est encadré par un commentaire HTML comme dans ton exemple, sauf s'il comprend la chaîne de caractères "--". As-tu un exemple de page complète qui ne valide pas ?
a écrit :
sauf s'il comprend la chaîne de caractères "--"

Arg ! Tout s'explique en effet, puisque je fais un usage immodéré des opérateurs -- et ++. Trrrrrès embêtant... Smiley ohwell

Bon, je vais voir comment m'arranger avec ça. Merci pour l'info !! Smiley biggrin
Je vois parfois ce genre de syntaxe :

<script type="text/javascript">
<![CDATA[

function valider() {
  // si la valeur du champ prenom est non vide
  if(document.formSaisie.prenom.value != "") {
    // alors on envoie le formulaire
    document.formSaisie.submit();
  }
  else {
    // sinon on affiche un message
    alert("Saisissez le prénom");
  }
}

]]>
</script>


Ça ne fonctionnerait pas?

Source
Pourquoi, plus prosaïquement, ne pas externaliser ton fichier ?
<script type="text/javascript" src="tartampion.js"></script>
J'avais essayé la syntaxe avec <![CDATA[...]]> mais Firefox (au moins) n'aime pas ça du tout ... Par ailleurs, éliminer l'opérateur -- des fichiers .js est certes casse-pieds mais faisable, et puis ça améliore leur compatibilité, ce qui est un argument de poids.

Quant à l'externalisation des fichiers, c'est de là que je viens, justement, je ne vais pas y retourner Smiley cligne C'est évidemment une méthode simple et robuste mais elle a pour moi quelques inconvénients : l'appli web que je développe inclut souvent une douzaine ou plus de modules javascript (et autant de CSS). Ca fait une requête HTML par lien JS (ou CSS, d'ailleurs). Or, le réseau sur lequel elle va tourner est anormalement lent. Ne pouvant règler les problèmes de réseau, j'optimise les temps de chargement et en l'occurrence, j'essaye aussi de mettre en ligne dans le fichier HTML livré par le serveur web le maximum d'informations, dont les CSS et les JS.
Herode a écrit :
J'avais essayé la syntaxe avec <![CDATA[...]]> mais Firefox (au moins) n'aime pas ça du tout ...

Il suffit d'ajouter des commentaires :
<script type="text/javascript">/*<![CDATA[*/
  [i][...][/i]
/*]]>*/</script>

Dans ce cas, il faudra que le code ne contienne pas "</" (pour une question de compatibilité avec HTML).

Mais la solution la plus robuste reste en effet les commentaires SGML/XML, à condition que le code ne contienne pas "--" et que le document soit servi en tant que "text/html".
Modifié par Julien Royer (03 Oct 2007 - 09:52)