5568 sujets

Sémantique web et HTML

Bonjour à tous,

Une petite question me turlupine.
Voilà, je suis en train créer mon site, et j'ai donc naturellement utilisé le validateur W3C afin d'éviter des erreurs. Tout se passe très bien à part une chose.

J'ai un bloc javascript présent dans la partie head de ma page. Celui-ci est utilisé pour initialiser un slider. Concrètement, voilà ce qui s'y trouve :

$(document).ready(function(){
		$("#slider").easySlider({
		controlsBefore:	'<p id="controls" >',
		controlsAfter:	'</p>',
		prevText: 'Précédent',
		nextText: 'Suivant',
		controlsFade: true,
		auto: true, 
		speed: 800,
		pause: 5000,
		continuous: true
	});
});


Lors de la validation j'obtiens une erreur :
a écrit :

document type does not allow element "p" here
controlsBefore:	'<p id="controls" >',

The element named above was found in a context where it is not allowed. This could mean that you have incorrectly nested elements -- such as a "style" element in the "body" section instead of inside "head" -- or two elements that overlap (which is not allowed).

One common cause for this error is the use of XHTML syntax in HTML documents. Due to HTML's rules of implicitly closed elements, this error can create cascading effects. For instance, using XHTML's "self-closing" tags for "meta" and "link" in the "head" section of a HTML document may cause the parser to infer the end of the "head" section and the beginning of the "body" section (where "link" and "meta" are not allowed; hence the reported error).


Je comprend bien qu'une balise <p> ne peut se trouver dans le bloc head, mais étant donné qu'il s'agit d'une partie de mon javascript, je ne comprend pas bien pourquoi ce n'est pas valide, ni comment résoudre ce problème...

Quelqu'un y comprendrait-il mieux que moi ? Smiley smile

Merci d'avance

(je ne suis pas certain d'être dans la bonne catégorie, j'espère que oui, désolé du dérangement autrement)
Modifié par pixelb (09 Jan 2010 - 17:42)
De deux choses l'une : soit tu mets ton code JavaScript dans un fichier externe soit tu encadres ton code JavaScript en ligne de balises de commentaire ou de balises CDATA, comme suit.
<script type="text/javascript">
<!--
$(document).ready(function(){ 
        $("#slider").easySlider({ 
        controlsBefore:    '<p id="controls" >', 
        controlsAfter:    '</p>', 
        prevText: 'Précédent', 
        nextText: 'Suivant', 
        controlsFade: true, 
        auto: true,  
        speed: 800, 
        pause: 5000, 
        continuous: true 
    }); 
});
-->
</script>

ou
<script type="text/javascript">
<![CDATA[
$(document).ready(function(){ 
        $("#slider").easySlider({ 
        controlsBefore:    '<p id="controls" >', 
        controlsAfter:    '</p>', 
        prevText: 'Précédent', 
        nextText: 'Suivant', 
        controlsFade: true, 
        auto: true,  
        speed: 800, 
        pause: 5000, 
        continuous: true 
    }); 
});
]]>
</script>

Ainsi, le validateur ignorera les caractères spéciaux (comme les chevrons ou l'esperluette) compris entre ces balises.