<?xml version="1.0" encoding="ISO-8859-15" ?>
<rdf:RDF
	xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:admin="http://webns.net/mvcb/"
	xmlns:cc="http://web.resource.org/cc/"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns="http://purl.org/rss/1.0/">

	<channel rdf:about="http://forum.alsacreations.com/faq/">
		<title>FAQ xHTML/CSS et aux standards</title>
		<description>Les 10 dernières questions de la FAQ</description>
		<link>http://forum.alsacreations.com/faq/</link>
		<admin:generatorAgent rdf:resource="http://forum.alsacreations.com/faq/" />
  		<items>
  			<rdf:Seq>
				<rdf:li rdf:resource="http://forum.alsacreations.com/faq/#item102" />
				<rdf:li rdf:resource="http://forum.alsacreations.com/faq/#item101" />
				<rdf:li rdf:resource="http://forum.alsacreations.com/faq/#item100" />
				<rdf:li rdf:resource="http://forum.alsacreations.com/faq/#item99" />
				<rdf:li rdf:resource="http://forum.alsacreations.com/faq/#item98" />
				<rdf:li rdf:resource="http://forum.alsacreations.com/faq/#item97" />
				<rdf:li rdf:resource="http://forum.alsacreations.com/faq/#item96" />
				<rdf:li rdf:resource="http://forum.alsacreations.com/faq/#item95" />
				<rdf:li rdf:resource="http://forum.alsacreations.com/faq/#item94" />
				<rdf:li rdf:resource="http://forum.alsacreations.com/faq/#item93" />
			</rdf:Seq>
		</items>
	</channel>

	<item rdf:about="http://forum.alsacreations.com/faq/#item102">
		<title>De la musique en continu sur un site, sans coupure?</title>
		<link>http://forum.alsacreations.com/faq/#item102</link>
		<dc:date>2008-07-19T12:45:58+00:00</dc:date>
		<dc:language>fr</dc:language>
		<dc:creator>FAQ Alsacréations</dc:creator>
		<dc:subject><![CDATA[Questions diverses]]></dc:subject>
		<description><![CDATA[Une question qui revient régulièrement: comment sonoriser un site, sans que la musique ne se coupe lors du changement de page?<br />
<br />
POUR COMMENCER, QUELS MOYENS POUR JOUER DE LA MUSIQUE?<br />
<br />
À l&#039;heure actuelle (2008), les navigateurs ne jouent pas directement les fichiers musicaux. Il faut passer par un plugin, par exemple le lecteur Flash ou Windows Media ou Quicktime ou autre. Le plus répandu est le lecteur Flash, et représente la solution la plus compatible actuellement. Flash permet de lire de la musique au format MP3. Il existe des lecteurs Flash tel que celui-ci:<br />
<a href="http://www.alsacreations.fr/dewplayer">http://www.alsacreations.fr/dewplayer</a><br />
<br />
D&#039;autres lecteurs peuvent jouer de la musique sans être visibles sur la page, ou en proposant juste un bouton «arrêter/activer la musique», ce qui peut être utile pour des musiques d&#039;ambiance.<br />
<br />
PROBLÈME ET SOLUTIONS TECHNIQUES<br />
<br />
Changer de page revient à changer de document web, c&#039;est à dire à fermer un document pour en ouvrir un autre. Lors du changement de page, toute plugin intégré à la page sera arrêté. Ce qui signifie: coupure brutale de la musique intégrée à la page.<br />
<br />
Pour que la musique joue en continu, il faut donc garder un document ou une partie de document toujours ouvert dans le navigateur. Parmi les solutions possibles:<br />
<br />
1. Utiliser des frames. Une frame portera le lecteur et peut-être d&#039;autres éléments (par exemple un menu de navigation), tandis que la deuxième frame affichera le contenu. Effets secondaires: problèmes possibles d&#039;accessibilité et de référencement.<br />
<br />
2. Faire un site entièrement en Flash. Effets secondaires: problèmes possibles d&#039;accessibilité, et problèmes certains de référencement.<br />
<br />
3. Faire un site dont tous les contenus sont chargés en Ajax. Effets secondaires: problèmes possibles d&#039;accessibilité, et problèmes certains de référencement.<br />
<br />
4. Proposer au visiteur d&#039;ouvrir une fenêtre pop-up contenant un lecteur Flash jouant une musique, ou permettant de lire des morceaux. Cela peut se faire avec la Zanorg Radio (<a href="http://radio.zanorg.com/">http://radio.zanorg.com/</a>) ou quelque chose d&#039;équivalent.<br />
<br />
MISE EN GARDE SUR LA SONORISATION DES SITES<br />
<br />
Sonoriser un site n&#039;est pas toujours pertinent. La musique est souvent perçue, sur les sites qui n&#039;ont pas de rapport, comme envahissante. L&#039;utilisateur n&#039;est pas toujours en situation de visiter un site sonorisé. Par exemple:<br />
<br />
- l&#039;utilisateur n&#039;a peut-être pas le son, ou ne l&#039;a pas activé (la musique est alors téléchargée inutilement);<br />
- l&#039;utilisateur écoute déjà de la musique, et toute musique supplémentaire serait parasite;<br />
- l&#039;utilisateur est au bureau, et ne préfère pas que de la musique surgisse tout à coup de son poste de travail;<br />
- etc.<br />
<br />
Quelques règles:<br />
- toujours proposer un bouton (bien visible) pour arrêter la musique;<br />
- si la musique n&#039;a pas de rapport direct avec le site, ne pas la lancer automatiquement.<br />
]]></description>
	</item>

	<item rdf:about="http://forum.alsacreations.com/faq/#item101">
		<title>Ma page/mon code source commence par ï»¿ de quoi s&#039;agit-il ?</title>
		<link>http://forum.alsacreations.com/faq/#item101</link>
		<dc:date>2008-07-19T12:45:58+00:00</dc:date>
		<dc:language>fr</dc:language>
		<dc:creator>FAQ Alsacréations</dc:creator>
		<dc:subject><![CDATA[Encodage et internationalisation]]></dc:subject>
		<description><![CDATA[Ce que vous voyez est appelé un BOM (pour Byte Order Mark ou, en français, Marque d&#039;ordre des octets). On le trouve au début des fichiers enregistrés en unicode (UTF-8, UTF-16 ou UTF-32), il contient des renseignements sur le sens de lecture des données.<br />
<br />
Ennuis possibles<br />
<br />
Malheureusement, certains logiciels n&#039;interprètent pas correctement le BOM, ils le considère comme une partie du texte et l&#039;affichent. Il en résulte alors ces fameux caractères: ï»¿; Lesquels peuvent se révéler problématiques sur la toile, provoquant notamment l&#039;envoi prématuré des entêtes, la corruption du rendu sous Internet Explorer ou encore des espaces indésirables.<br />
<br />
Inutile en UTF-8<br />
<br />
Chose intéressante pour nous, l&#039;encodage UTF-8, contrairement à ses grands frères, ne possède qu&#039;un seul sens de lecture des données. En conséquence l&#039;information fournie par le BOM n&#039;y est pas indispensable et on peut donc le retirer; ce qui est vivement recommandé, au moins pour tout ce qui touche à internet.<br />
<br />
Enlever le BOM<br />
<br />
Pour retirer le BOM il faut configurer votre éditeur de texte préféré de manière à ce qu&#039;il ne l&#039;ajoute pas lors de l&#039;enregistrement. La quasi totalité des programmes le permet, cependant l&#039;option est souvent difficile à trouver. Pour vous aider, sachez que les désignations suivantes sont parfois utilisées à la place de BOM: marque d&#039;ordre des octets, octets de signatures, signature UTF-8, ordre UTF-8, cookie UTF-8.<br />
Pour ceux qui utilise Windows, vous pouvez également vous servir de kaboom (voir <a href="http://www.sutekidane.net/blog/kaboom-encodez-en-batch-vos-fichiers-php-et-html.html">http://www.sutekidane.net/blog/kaboom-encodez-en-batch-vos-fichiers-php-et-html.html</a>)]]></description>
	</item>

	<item rdf:about="http://forum.alsacreations.com/faq/#item100">
		<title>Comment diagnostiquer un problème d&#039;encodage</title>
		<link>http://forum.alsacreations.com/faq/#item100</link>
		<dc:date>2008-07-19T12:45:58+00:00</dc:date>
		<dc:language>fr</dc:language>
		<dc:creator>FAQ Alsacréations</dc:creator>
		<dc:subject><![CDATA[Encodage et internationalisation]]></dc:subject>
		<description><![CDATA[Un problème d&#039;encodage se manifeste par le fait qu&#039;une partie ou la totalité des caractères spéciaux (accents, ½, », etc) d&#039;un document ne sont pas affichés correctement(1). Si vous vous trouvez dans cette situation, nous allons voir comment déterminer la source et éventuellement la solution à votre problème.<br />
Attention tout de même à ne pas confondre avec la situation où la police utilisée ne supporte pas les caractères affichés, tout le texte sera alors mal rendu (par exemple sur une page en japonais).<br />
<br />
<br />
CARACTÉRISATIONS<br />
a) Quelle est l&#039;étendue du problème&nbsp;? S&#039;agit-il du document entier, d&#039;une partie provenant d&#039;une source externe (fichier inclus, rss, base de donnée, etc) ou d&#039;une partie quelconque&nbsp;?<br />
b) Arrivez-vous à obtenir un rendu normal dans la partie concernée en forçant le jeu de caractères de votre navigateur(2) (n&#039;essayez pas non-plus toute la liste, les plus communs suffisent souvent à le savoir)&nbsp;?<br />
<br />
<br />
IDENTIFICATIONS &amp; SOLUTIONS<br />
Voici les cas les plus courants classés en fonctions des résultats obtenus avec les manipulations ci-dessus, ceux qui ne sont pas listés arrivent très rarement, venez en discuter sur le forum.<br />
<br />
Affecte&nbsp;: document entier, Correction: possible<br />
Vous êtes en face d&#039;une déclaration d&#039;encodage erronée, celui renseigné ne correspond pas à celui du document.<br />
Solution&nbsp;: corriger la déclaration (<a href="http://forum.alsacreations.com/faq/faq-78-Comment-bien-declarer-l039encodage-des-caracteres-d039un-document-.html">http://forum.alsacreations.com/faq/faq-78-Comment-bien-declarer-l039encodage-des-caracteres-d039un-document-.html</a>)<br />
<br />
Affecte&nbsp;: partie externe, Correction: possible<br />
Le problème vient du fait que le jeu de caractères utilisé par la source externe n&#039;est pas identique à celui de votre document. Par exemple vous affichez le contenu d&#039;un fichier XML encodé en UTF8 dans un document iso-8859-1.<br />
Solution&nbsp;: normaliser l&#039;encodage du document et de la source (rendre les deux identique) soit en le modifiant pour l&#039;un des côtés soit en effectuant une conversion lors de l&#039;importation.<br />
<br />
Affecte&nbsp;: souvent partie quelconque, Correction: impossible<br />
Ici la situation est plus délicate, il s&#039;agit souvent d&#039;une corruption de l&#039;encodage. Cela peut arriver par exemple lorsque l&#039;on modifie de l&#039;UTF8 à l&#039;aide de fonctions prévues pour de l&#039;ASCII ou de l&#039;iso-8859-1. Dans ce cas l&#039;encodage est altéré et ne correspond plus à rien, devenant du même coup illisible.<br />
Solution&nbsp;: malheureusement il s&#039;agit souvent de cas par cas, les origines étant très diverses. Vérifiez tout de même quels traitements vous effectuez sur le texte en question et si le problème disparaît en les supprimant.<br />
<br />
<br />
NOTES<br />
1) Par exemple l&#039;affichage d&#039;UTF8 en iso-8859-1 donnera des Ã© à la place des é. Inversement afficher un document iso-8859-1 en UTF8 affichera des&nbsp;? À la place des accents.<br />
2) Firefox&nbsp;: Affichage-&gt;Encodage<br />
   Opera&nbsp;: Afficher-&gt;Encodage<br />
   IE&nbsp;: Page-&gt;Codage]]></description>
	</item>

	<item rdf:about="http://forum.alsacreations.com/faq/#item99">
		<title>Comment fonctionne la propriété CSS z-index?</title>
		<link>http://forum.alsacreations.com/faq/#item99</link>
		<dc:date>2008-07-19T12:45:58+00:00</dc:date>
		<dc:language>fr</dc:language>
		<dc:creator>FAQ Alsacréations</dc:creator>
		<dc:subject><![CDATA[Positionnement, alignement, centrage]]></dc:subject>
		<description><![CDATA[La propriété &quot;z-index&quot; permet de préciser l&#039;empilement de certains éléments d&#039;une page. Elle permet par exemple d&#039;indiquer que pour deux éléments A et B partiellement ou totalement superposés, A sera placé au dessus de B ou inversement.<br />
<br />
Mais l&#039;utilisation de cette propriété comporte quelques pièges. Il y a deux informations principales à retenir:<br />
<br />
1. SEULS LES ÉLÉMENTS POSITIONNÉS PEUVENT AVOIR UN Z-INDEX. Un élément positionné est un élément dont la propriété CSS &quot;position&quot; a pour valeur &quot;relative&quot;, &quot;absolute&quot; ou &quot;fixed&quot;. Par défaut, les éléments d&#039;une page ne sont pas positionnés (ils sont en &quot;position:static&quot;).<br />
<br />
2. LES VALEURS LES PLUS ÉLEVÉES SONT AU PREMIER PLAN, et les plus faibles sont au second plan. Un z-index de 2 sera placé au dessus d&#039;un z-index de 1, et un z-index de -1 sera placé au dessus d&#039;un z-index de -2.<br />
<br />
<br />
UN EXEMPLE POUR LA ROUTE<br />
<br />
Soit le code HTML suivant:<br />
<div class="code"><br />
&lt;div id=&quot;test1&quot;&gt;&#8230;&lt;/div&gt;<br />
&lt;div id=&quot;test2&quot;&gt;&#8230;&lt;/div&gt;<br />
&lt;div id=&quot;test3&quot;&gt;&#8230;&lt;/div&gt;<br />
&lt;div id=&quot;test4&quot;&gt;&#8230;&lt;/div&gt;</div>et le code CSS suivant:<br />
<div class="code"><br />
div {height: 100px; width: 100px;}<br />
div#test1 {position: absolute; z-index: 4;}<br />
div#test2 {position: absolute; z-index: 2;}<br />
div#test3 {z-index: 10;}<br />
div#test4 {position: relative; z-index: 8;}</div>Le résultat attendu est le suivant:<br />
- div#test1 sera au premier plan;<br />
- en dessous on aura div#test2;<br />
- en dessous encore on aura div#test3 (qui ne se place pas au-dessus malgré un z-index de 10 car il n&#039;est pas positionné);<br />
- enfin, div#test4 sera le plus haut de la pile, mais ne recouvre pas les autres blocs ici car il est repoussé vers le bas par div#test3 qui n&#039;est pas positionné.<br />
<br />
Au final, si tous les blocs ont une couleur de fond opaque, on ne pourra apercevoir que div#test1 en haut et div#test4 plus bas. Les autres blocs sont recouverts par div#test1.<br />
<br />
]]></description>
	</item>

	<item rdf:about="http://forum.alsacreations.com/faq/#item98">
		<title>S&#039;y retrouver entre ASCII, ANSI, Latin1, ISO-8859-1, MacRoman, Windows-1252, etc.</title>
		<link>http://forum.alsacreations.com/faq/#item98</link>
		<dc:date>2008-07-19T12:45:58+00:00</dc:date>
		<dc:language>fr</dc:language>
		<dc:creator>FAQ Alsacréations</dc:creator>
		<dc:subject><![CDATA[Encodage et internationalisation]]></dc:subject>
		<description><![CDATA[Vous avez sûrement déjà croisé certaines des appelations suivantes: ASCII, ANSI, Latin1, ISO-8859-1, MacRoman, Windows-1252, etc. Elles désignent toutes des encodages de caractères. Et comme la plupart de ces encodages sont assez proches entre eux (on pourrait dire qu&#039;ils font partie de la même famille, même si ça n&#039;est pas tout à fait le cas), les confusions sont fréquentes, et on utilise parfois un nom pour un autre.<br />
<br />
Tentons de mettre les choses au point.<br />
<br />
RAPIDE INTRODUCTION SUR LES ENCODAGES DE CARACTÈRES<br />
<br />
En informatique, un encodage de caractères est une norme qui dit, grosso modo, à quels caractères correspondent un ensemble de valeurs numériques. Les fichiers informatiques, même lorsqu&#039;ils sont au format texte brut, ne sont pas des suites de lettres et autres caractères, mais des suites de nombres. Pour chaque nombre, il s&#039;agit de savoir à quel lettre ou caractère il correspond. C&#039;est le rôle de l&#039;encodage de définir cette correspondance.<br />
(On pourrait être beaucoup plus exact et précis sur ce qu&#039;est un encodage de caractères, mais au prix de développements fastidieux&#8230; on en restera donc là.)<br />
<br />
Lorsqu&#039;on réalise un site web, il est important de savoir dans quel encodage est enregistré un document (une page HTML par exemple), afin de pouvoir déclarer cet encodage si besoin, et de pouvoir conserver le bon encodage lorsqu&#039;on modifie le fichier.<br />
<br />
Le problème avec les encodages cités ci-dessus, c&#039;est qu&#039;on ne sait pas toujours à quoi ils correspondent, et qu&#039;on utilise parfois un nom à la place d&#039;un autre! Mettons un peu les choses au point.<br />
<br />
LES ENCODAGES ASCII ET FILS<br />
<br />
- ASCII (<a href="http://fr.wikipedia.org/wiki/US-ASCII">http://fr.wikipedia.org/wiki/US-ASCII</a>)<br />
ASCII est en encodage qui contient 128 caractères, soit pas des masses. En gros, ça sert à écrire l&#039;anglo-américain, mais ça ne permet pas d&#039;écrire les langues européennes qui ont des «caractères spéciaux», notamment des lettres avec diacritiques (accents, cédille, autres joyeusetés). Bref, on ne peut pas écrire en français avec de l&#039;ASCII, et à vrai dire on a rarement besoin d&#039;utiliser cet encodage.<br />
Les 128 caractères ASCII restent cependant la base d&#039;une partie des encodages modernes, créés comme des extensions d&#039;ASCII et compatibles avec celui-ci.<br />
<br />
- ISO-8859-1 ou Latin-1 (<a href="http://fr.wikipedia.org/wiki/ISO_8859-1">http://fr.wikipedia.org/wiki/ISO_8859-1</a>)<br />
Le nom officiel est ISO-8859-1 (c&#039;est d&#039;ailleurs celui qu&#039;on utilise pour déclarer l&#039;encodage d&#039;une page web), mais l&#039;appelation «Latin-1» ou «latin1» est fréquente. Il s&#039;agit d&#039;une extension d&#039;ASCII qui comporte 191 caractères imprimables. Elle permet d&#039;écrire la plupart des langues d&#039;Europe de l&#039;Ouest. Presque tous les caractères du français y sont (manque le «e dans l&#039;o»).<br />
<br />
- ISO-8859-15 ou Latin-9 (<a href="http://fr.wikipedia.org/wiki/ISO_8859-15">http://fr.wikipedia.org/wiki/ISO_8859-15</a>)<br />
Cette norme modifie légèrement ISO-8859-1. Pour le français, on notera l&#039;ajout du «e dans l&#039;o» (les caractères ½ et ¼). On notera aussi l&#039;ajout du symbole monétaire Euro (¤).<br />
<br />
- ANSI ou Windows-1252 (<a href="http://fr.wikipedia.org/wiki/Windows-1252">http://fr.wikipedia.org/wiki/Windows-1252</a>)<br />
ANSI est une extension d&#039;ISO-8859-1, qui rajoute un certain nombre de caractères: «e dans l&#039;o», symbole de l&#039;Euro, mais aussi guillemets anglais, points de suspension, signe «pour mille», tirets cadratin et demi-cadratin, etc. En tout, cela représente 218 caractères imprimables.<br />
Dans les années 90, Microsoft adopte ANSI pour son système d&#039;exploitation Windows. Aujourd&#039;hui, quand on parle d&#039;ANSI, on parle en fait de Windows-1252 (aussi nommé CP1252)<br />
<br />
- MacRoman (<a href="http://fr.wikipedia.org/wiki/MacRoman">http://fr.wikipedia.org/wiki/MacRoman</a>)<br />
Une autre extension d&#039;ASCII, qui couvre la plupart des caractères existant dans ISO-8859-1 mais sans être compatible. Si vous travaillez sous Mac OS ou recevez des fichiers de quelqu&#039;un travaillant sous Mac OS, il se peut que le texte soit en MacRoman.<br />
Voilà, nous arrivons à la fin de notre passage en revue d&#039;ASCII et de ses rejetons. Les choses devraient maintenant être plus claires&#8230; du moins, si nos outils (navigateurs, éditeurs de code&#8230;) ne viennent pas entretenir la confusion en mélangeant les termes.&nbsp;;)<br />
<br />
AU FAIT, QUEL ENCODAGE CHOISIR?<br />
<br />
Il est déconseillé d&#039;utiliser ANSI/Windows-1252 pour le Web. On lui préfèrera ISO-8859-1, ou ISO-8859-15. Pour les caractères n&#039;existant pas dans ces deux encodages, on pourra utiliser des entités HTML, par exemple &amp;mdash; pour un tiret cadratin.<br />
<br />
Une autre solution serait d&#039;utiliser UTF-8, un encodage qui permet d&#039;écrire un nombre très important de caractères, et la plupart des langues du monde. Sur les avantages comparés d&#039;ISO-8859-1/15 et d&#039;UTF-8, on pourra lire:<br />
<a href="http://forum.alsacreations.com/faq/faq-36-Charset-Iso-8859-1-iso-8859-15-utf-8-lequel-choisir-.html">http://forum.alsacreations.com/faq/faq-36-Charset-Iso-8859-1-iso-8859-15-utf-8-lequel-choisir-.html</a>]]></description>
	</item>

	<item rdf:about="http://forum.alsacreations.com/faq/#item97">
		<title>Comment encadrer les blocs de code JavaScript et CSS ?</title>
		<link>http://forum.alsacreations.com/faq/#item97</link>
		<dc:date>2008-07-19T12:45:59+00:00</dc:date>
		<dc:language>fr</dc:language>
		<dc:creator>FAQ Alsacréations</dc:creator>
		<dc:subject><![CDATA[Questions sur la validation, les standards, etc.]]></dc:subject>
		<description><![CDATA[Le contenu des éléments &quot;script&quot; et &quot;style&quot; est un peu particulier dans le sens où il n&#039;appartient pas à proprement parler au contenu du document&nbsp;: il s&#039;agit de blocs de code qui sont traités par les moteurs de script et de style appropriés (en grande majorité, JavaScript et CSS). Cette spécificité est problématique car traitée différemment en HTML et en XHTML.<br />
<br />
POUR UN DOCTYPE HTML&nbsp;:<br />
<br />
Ces éléments ont un type de contenu &quot;CDATA&quot; (contrairement aux autres éléments, qui ont un type de contenu &quot;PCDATA&quot;)&nbsp;: le parseur analyse le contenu de l&#039;élément comme du texte brut, jusqu&#039;à ce qu&#039;il rencontre les caractères &quot;&lt;/&quot; suivis d&#039;une lettre (a-z, A-Z). Cela signifie entre autres que les entités (comme &quot;&amp;nbsp;&quot;) ne sont pas prises en compte.<br />
<br />
Il est donc nécessaire d&#039;échapper les occurrences de &quot;&lt;/&quot;. Par exemple&nbsp;:<br />
<br />
<div class="code"><br />
&lt;script type=&quot;text/javascript&quot;&gt;<br />
  document.write(&quot;Alsacréation&lt;strong&gt;s&lt;&quot; + &quot;/strong&gt;&quot;);<br />
&lt;/script&gt;</div><br />
Il est par ailleurs assez courant d&#039;encadrer le contenu de ces éléments par des commentaires (&quot;&lt;!-- --&gt;&quot;), car cela permet d&#039;éviter que les navigateurs qui ne connaissent pas les éléments &quot;script&quot; et/ou &quot;style&quot; affichent leur contenu. Cependant, l&#039;utilisation de tels navigateurs est aujourd&#039;hui extrêmement marginale.<br />
<br />
De plus, il faut bien comprendre que les navigateurs qui connaissent les éléments &quot;script&quot; et &quot;style&quot; savent que leur type de contenu est &quot;CDATA&quot; et passent donc les commentaires aux moteurs de script et de style sans les interpréter. C&#039;est pourquoi ces derniers prennent en compte cette pratique&nbsp;: par exemple, les moteurs JavaScript ignorent une ligne commençant par &quot;&lt;!--&quot;.<br />
<br />
On écrit donc en général&nbsp;:<br />
<br />
<div class="code"><br />
&lt;script type=&quot;text/javascript&quot;&gt;&lt;!--<br />
  document.write(&quot;Alsacréation&lt;strong&gt;s&lt;&quot; + &quot;/strong&gt;&quot;);<br />
//--&gt;&lt;/script&gt;</div><br />
POUR UN DOCTYPE XHTML&nbsp;:<br />
<br />
En XHTML, le problème est différent, car le type de contenu des éléments &quot;script&quot; et &quot;style&quot; est &quot;PCDATA&quot;. Leur contenu est censé être lu par le parseur comme celui de n&#039;importe quel autre élément, ce qui nécessite d&#039;échapper les caractères spéciaux XML. Cela n&#039;est cependant pas le cas en pratique si le document est servi en tant que &quot;text/html&quot;.<br />
<br />
On se retrouve donc face à deux problèmes antagonistes&nbsp;: un problème d&#039;utilisation (si les caractères spéciaux sont échappés, ils vont être interprétés tels quels par les moteurs de style et de script), et un problème de validation (si les caractères spéciaux ne sont pas échappés, le document ne validera pas). La solution la plus courante consiste à utiliser les commentaires XML, qui peuvent contenir des caractères spéciaux&nbsp;:<br />
<br />
<div class="code"><br />
&lt;script type=&quot;text/javascript&quot;&gt;&lt;!--<br />
  document.write(&quot;Alsacréation&lt;strong&gt;s&lt;&quot; + &quot;/strong&gt;&quot;);<br />
//--&gt;&lt;/script&gt;</div><br />
On reste ainsi compatible avec HTML, tout en permettant la validation XHTML. Il faut cependant continuer à échapper la chaîne &quot;&lt;/&quot;, ainsi que la chaîne &quot;--&quot;, qui est illégale dans les commentaires XML.<br />
<br />
-------------------<br />
<br />
CONCLUSION&nbsp;:<br />
<br />
- HTML&nbsp;: on peut éventuellement encadrer le bloc de code par &quot;&lt;!--&quot; et &quot;--&gt;&quot;. Il faut échapper la chaîne &quot;&lt;/&quot;.<br />
- XHTML servi en tant que &quot;text/html&quot;&nbsp;: on encadre le bloc de code par &quot;&lt;!--&quot; et &quot;--&gt;&quot;. Il faut échapper les chaînes &quot;&lt;/&quot; et &quot;--&quot;. On peut également utiliser une section CDATA (voir le lien explicatif d&#039;Openweb), mais cela ne présente pas un grand intérêt.<br />
- XHTML servi en tant que &quot;application/xhtml+xml&quot;&nbsp;: on encadre le bloc de code avec une section CDATA ou on échappe les caractères spéciaux.<br />
<br />
Bien entendu, le plus simple reste, lorsque c&#039;est possible, de placer le code JavaScript et CSS dans des fichiers séparés.<br />
<br />
]]></description>
	</item>

	<item rdf:about="http://forum.alsacreations.com/faq/#item96">
		<title>Obtenir la transparence PNG avec Internet Explorer 6</title>
		<link>http://forum.alsacreations.com/faq/#item96</link>
		<dc:date>2008-07-19T12:45:59+00:00</dc:date>
		<dc:language>fr</dc:language>
		<dc:creator>FAQ Alsacréations</dc:creator>
		<dc:subject><![CDATA[Mise en page générale]]></dc:subject>
		<description><![CDATA[Le format d&#039;images PNG (et plus particulièrement le PNG32) permet de gérer des images RVB dotées d&#039;une couche alpha, c&#039;est à dire d&#039;indications de transparence graduelle. Contrairement au format GIF et à son équivalent, le PNG8, il ne s&#039;agit pas d&#039;une transparence binaire (un pixel est soit transparent, soit opaque), mais bien d&#039;une transparence graduelle: chaque pixel peut être un peu, beaucoup ou pas du tout transparent (256 nuances).<br />
<br />
C&#039;est donc un format très pratique pour le design web. Sauf que&#8230; le navigateur Internet Explorer est réputé pour ne pas supporter la transparence PNG, et afficher les images PNG transparentes avec un fond gris opaque particulièrement laid.<br />
<br />
Il est faux de dire qu&#039;Internet Explorer ne supporte pas la transparence PNG. La version 7 de ce navigateur l&#039;interprète aussi bien que tous les autres navigateurs modernes. Par contre, c&#039;est effectivement le cas pour la version 6, encore très largement utilisée, et sur laquelle il faudra compter pour quelques temps encore.<br />
<br />
Il existe toutefois un moyen détourné d&#039;obtenir «plus ou moins» du PNG transparent avec Internet Explorer 5.5 et 6.0, que nous allons détailler.<br />
<br />
LES FILTRES ALPHAIMAGELOADER<br />
<br />
À partir de la version 5.5, Internet Explorer intègre le support de fonctions propriétaires permettant de faire appel à DirectX pour certaines manipulations graphiques. L&#039;une de ces manipulations graphiques consiste à intercaler, entre le fond d&#039;un bloc et son contenu, une image avec transparence graduelle.<br />
<br />
On peut utiliser cette fonctionnalité via Javascript, mais nous passerons ici par la propriété CSS non standard &quot;filter&quot;. Afin d&#039;éviter que cette propriété ne s&#039;applique à IE7 également, et pour garder un code CSS valide par ailleurs, on utilisera un commentaire conditionnel:<br />
<div class="code"><br />
&lt;!-- Code à insérer dans le &quot;head&quot; de la page --&gt;<br />
&lt;!--[if lte IE 6]&gt;<br />
&lt;style type=&quot;text/css&quot; media=&quot;screen&quot;&gt;<br />
#bloc {<br />
background: none; /* Il supprimer l&#039;image de fond s&#039;il y en a une de déclarée dans la feuille de styles principale */<br />
filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src=&quot;/chemin/vers/mon-image.png&quot;, sizingMethod=&quot;scale&quot;);<br />
}<br />
&lt;/style&gt;<br />
&lt;![endif]--&gt;</div>Attention, si on place cette propriété dans une feuille de styles externes (une feuille de correctifs CSS pour IE6 et inférieurs appelée via un commentaire conditionnel, par exemple), le chemin ne s&#039;appliquera pas depuis la feuille de style (comme c&#039;est normalement le cas en CSS), mais depuis la page HTML. Une solution pour ne pas s&#039;emmêler les pinceaux: utiliser des chemins absolus, commençant par &quot;/&quot;.<br />
<br />
Le code ci-dessus permet donc d&#039;afficher l&#039;image PNG, qui sera étirée (sizingMethod=&quot;scale&quot;) dans le bloc. Les valeurs possibles pour la propriété sizingMethod sont:<br />
- &quot;crop&quot; (rogne l&#039;image pour qu&#039;elle tienne dans le bloc);<br />
- &quot;image&quot;, valeur par défaut (réduit ou élargit le bloc pour correspondre aux dimmensions de l&#039;image);<br />
- &quot;scale&quot; (étire l&#039;image aux dimmensions du bloc).<br />
<br />
LES LIMITES DE CETTE MÉTHODE<br />
<br />
Tout d&#039;abord, il faut bien noter que le filtre AlphaImageLoader ne substitue pas une image (avec transparence PNG activée) à l&#039;image de fond d&#039;un bloc. L&#039;image placée en «fond» du bloc (en fait entre le fond et le contenu) n&#039;est pas une image de fond à proprement parler, et on ne pourra pas utiliser les propriétés CSS pour les images de fond.<br />
<br />
Donc:<br />
1. pas de background-position (et pas d&#039;équivalent via des propriétés d&#039;AlphaImageLoader);<br />
2. pas de background-repeat (et pas d&#039;équivalent&#8230; sauf peut-être sizingMethod=&quot;scale&quot; pour les images unies, sans motif, et dans les cas où on aurait pu utiliser une image de fond de 1px de haut répétée en hauteur -- ou une image de 1px de large répétée en largeur).<br />
<br />
Une autre limite importante vient du fait que POUR QUE CELA FONCTIONNE, LE BLOC DOIT AVOIR LE LAYOUT. Il faudra donc peut-être également conférer le &quot;layout&quot; au bloc, par exemple de la manière suivante:<br />
<div class="code"><br />
&lt;!--[if lte IE 6]&gt;<br />
&lt;style type=&quot;text/css&quot; media=&quot;screen&quot;&gt;<br />
#bloc {<br />
zoom: 1; /* HasLayout */<br />
background: none;<br />
filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src=&quot;/chemin/vers/mon-image.png&quot;, sizingMethod=&quot;scale&quot;);<br />
}<br />
&lt;/style&gt;<br />
&lt;![endif]--&gt;</div>Au sujet du HasLayout, on pourra lire:<br />
<a href="http://forum.alsacreations.com/faq/faq-91-Qu039est-ce-que-le-HasLayout-et-comment-l039utiliser.html">http://forum.alsacreations.com/faq/faq-91-Qu039est-ce-que-le-HasLayout-et-comment-l039utiliser.html</a><br />
<br />
AUTOMATISER L&#039;UTILISATION DE ALPHAIMAGELOADER AVEC JAVASCRIPT<br />
<br />
Plusieurs scripts Javascript se proposent d&#039;appliquer automatiquement les correctifs nécessaires à la prise en compte de la transparence PNG dans IE6, soit pour les images dans le code HTML, soit pour les images de fond CSS, soit pour les deux.<br />
<br />
Celui-ci est régulièrement cité (nota: explications en anglais):<br />
<a href="http://www.twinhelix.com/css/iepngfix/">http://www.twinhelix.com/css/iepngfix/</a><br />
]]></description>
	</item>

	<item rdf:about="http://forum.alsacreations.com/faq/#item95">
		<title>Comment intégrer du code JavaScript dans une page de manière valide ?</title>
		<link>http://forum.alsacreations.com/faq/#item95</link>
		<dc:date>2008-07-19T12:45:59+00:00</dc:date>
		<dc:language>fr</dc:language>
		<dc:creator>FAQ Alsacréations</dc:creator>
		<dc:subject><![CDATA[JavaScript]]></dc:subject>
		<description><![CDATA[Il y a deux manières d&#039;intégrer du code JavaScript dans une page&nbsp;: <br />
<br />
1. en liant un fichier externe&nbsp;: <br />
<div class="code"><br />
&lt;script type=&quot;text/javascript&quot; src=&quot;monScript.js&quot;&gt;&lt;/script&gt;</div><br />
Attention, la balise &quot;script&quot; n&#039;est pas auto-fermante, on ne peut pas écrire &lt;script type=&quot;text/javascript&quot; /&gt;<br />
<br />
2. en ajoutant le code JavaScript à l&#039;intérieur de l&#039;élément &lt;script&gt;&nbsp;:<br />
<div class="code"><br />
&lt;script type=&quot;text/javascript&quot;&gt;&lt;!--<br />
   // Mon code Javascript&nbsp;:<br />
   &#8230;<br />
//--&gt;&lt;/script&gt;</div><br />
<br />
Remarquez que c&#039;est bien l&#039;attribut &quot;type&quot; qui doit être renseigné et non &quot;language&quot;, qui est déconseillé par la spécification HTML 4.01.<br />
<br />
]]></description>
	</item>

	<item rdf:about="http://forum.alsacreations.com/faq/#item94">
		<title>Comment lancer plusieurs fonctions au chargement d&#039;une page ?</title>
		<link>http://forum.alsacreations.com/faq/#item94</link>
		<dc:date>2008-07-19T12:45:59+00:00</dc:date>
		<dc:language>fr</dc:language>
		<dc:creator>FAQ Alsacréations</dc:creator>
		<dc:subject><![CDATA[JavaScript]]></dc:subject>
		<description><![CDATA[Lors de l&#039;utilisation de plusieurs bibliothèques JavaScript sur une même page, il arrive que seule l&#039;une d&#039;entre elles fonctionne correctement.<br />
<br />
Cela est en général dû à un problème d&#039;écrasement des gestionnaires d&#039;événement &quot;DOM 0&quot;&nbsp;: en effet, si l&#039;attribut &quot;onload&quot; est défini plusieurs fois (soit sur l&#039;objet &quot;window&quot; dans le JavaScript, soit sur l&#039;élément &quot;body&quot; dans le (X)HTML), seule la dernière définition est prise en compte.<br />
<br />
Par exemple&nbsp;:<br />
<div class="code"><br />
[&#8230;]<br />
<br />
  &lt;script type=&quot;text/javascript&quot;&gt;&lt;!--<br />
    window.onload = init1;<br />
  //--&gt;&lt;/script&gt;<br />
<br />
&lt;/head&gt;<br />
&lt;body onload=&quot;init2();&quot;&gt;<br />
<br />
&lt;!-- Seule init2 sera exécutée au chargement de la page --&gt;<br />
<br />
  [&#8230;]</div><br />
Pour éviter ce problème, il existe plusieurs solutions&nbsp;:<br />
<br />
1/ Regrouper toutes les initialisations&nbsp;:<br />
<br />
- dans le code JavaScript&nbsp;:<br />
<div class="code"><br />
window.onload = function() { init1(); init2(); };</div><br />
- dans le code (X)HTML&nbsp;:<br />
<div class="code"><br />
&lt;body onload=&quot;init1(); init2();&quot;&gt;</div><br />
2/ Utiliser une fonction qui gère l&#039;ajout des gestionnaires d&#039;événement en évitant l&#039;écrasement, comme celle de Simon Willison&nbsp;: <a href="http://simon.incutio.com/archive/2004/05/26/addLoadEvent">http://simon.incutio.com/archive/2004/05/26/addLoadEvent</a>.<br />
<br />
3/ Passer par les gestionnaires d&#039;événement DOM 2 / IE.<br />
<br />
Les deux dernières solutions sont évoquées dans le tutoriel &quot;JavaScript&nbsp;: organiser son code en modules&quot; (<a href="http://css.alsacreations.com/Tutoriels-JavaScript/JavaScript-organiser-son-code-en-modules#tuto4">http://css.alsacreations.com/Tutoriels-JavaScript/JavaScript-organiser-son-code-en-modules#tuto4</a>).<br />
<br />
]]></description>
	</item>

	<item rdf:about="http://forum.alsacreations.com/faq/#item93">
		<title>Quelle est la différence entre les chemins relatifs et absolus ?</title>
		<link>http://forum.alsacreations.com/faq/#item93</link>
		<dc:date>2008-07-19T12:45:59+00:00</dc:date>
		<dc:language>fr</dc:language>
		<dc:creator>FAQ Alsacréations</dc:creator>
		<dc:subject><![CDATA[Bases et indispensables]]></dc:subject>
		<description><![CDATA[Souvent source d&#039;erreurs, de pages introuvables, d&#039;images manquantes ou de styles non appliqués, le format d&#039;écriture des liens est très important. Et pourtant, on ne prend pas forcément garde à la façon dont on fait pointer ces dernier vers les différents fichiers cible. Suivant la convention d&#039;écriture utilisée, de nombreux problèmes peuvent survenir. En effet, deux types d&#039;écritures cohabitent, chacune avec leur spécificité propre&nbsp;:<br />
- le chemin relatif (absence de slash initial)&nbsp;;<br />
- le chemin absolu (slash en préfixe du chemin).<br />
<br />
<br />
1) Sur le Web<br />
   * Le chemin relatif&nbsp;: dossier/page.html - ./dossier/page.html ou ../dossier/page.html<br />
La cible (page.html) va être cherchée par le navigateur à partir de la page html ou de la feuille de style qu&#039;il interprète.<br />
./&nbsp;: signifie que la page est cherchée à partir du répertoire courant.<br />
../&nbsp;: signifie que la page est cherchée à partir du répertoire parent (on remonte d&#039;un répertoire). <br />
Il est tout à fait possible de remonter plusieurs répertoires. Pour cela nous cumulerons les ../ .Par exemple pour remonter de deux niveaux, nous écrirons ../../dossier/page.html.<br />
<br />
<br />
   * Le chemin absolu&nbsp;: /dossier/page.html<br />
Dans bien des cas, le chemin absolu  est la convention d&#039;écriture la plus sûre. <br />
La page cible va être cherchée par le navigateur à partir de la racine du site. <br />
Dans notre exemple, le fichier page.html sera recherché directement à partir du domaine principal ou d&#039;un sous-domaine&nbsp;: <a href="http://www.domaine.fr/dossier/page.html">http://www.domaine.fr/dossier/page.html</a> ou <a href="http://autre.domaine.fr/dossier/page.html">http://autre.domaine.fr/dossier/page.html</a> <br />
<br />
<br />
2) En php<br />
   * Le chemin relatif&nbsp;: dossier/page.php - ./dossier/page.php ou ../dossier/page.php<br />
La cible (page.php) va être cherchée à partir du fichier exécuté.<br />
Attention&nbsp;: si vous utilisez cette convention d&#039;écriture pour un fichier inclus au moyen de la fonction include(), soyez conscient que le chemin relatif part non pas du fichier lui-même, mais du fichier dans lequel est placé son contenu&nbsp;: il s&#039;agit du fichier exécuté par le serveur.<br />
<br />
   * Le chemin absolu&nbsp;: /dossier/page.php<br />
La cible va être cherchée en partant de la racine du système de fichiers&nbsp;: /.<br />
Par exemple sous Windows&nbsp;: include(&#039;/inc/menu.php&#039;); équivaudrait à C:\inc\menu.php et non pas à <a href="http://www.domaine.fr/inc/menu.php">http://www.domaine.fr/inc/menu.php</a><br />
Pour obtenir la racine du serveur web, utilisez la variable $_SERVER[&#039;DOCUMENT_ROOT&#039;] en préfixe del&#039;antislash ().<br />
]]></description>
	</item>
</rdf:RDF>