<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Robusta : Java &#38; RESTful Web Services &#187; Ajax</title>
	<atom:link href="https://blog.developpez.com/java_rest/pcategory/ajax/feed" rel="self" type="application/rss+xml" />
	<link>https://blog.developpez.com/java_rest</link>
	<description></description>
	<lastBuildDate>Fri, 24 Dec 2010 11:23:17 +0000</lastBuildDate>
	<language>fr-FR</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.1.42</generator>
	<item>
		<title>Restful Web Services au Toulouse JUG</title>
		<link>https://blog.developpez.com/java_rest/p9607/ajax/restful_web_services_au_toulouse_jug</link>
		<comments>https://blog.developpez.com/java_rest/p9607/ajax/restful_web_services_au_toulouse_jug#comments</comments>
		<pubDate>Fri, 24 Dec 2010 11:20:22 +0000</pubDate>
		<dc:creator><![CDATA[nicorama]]></dc:creator>
				<category><![CDATA[Ajax]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Voici le slidecast de ma présentation sur REST au Toulouse JUG. C&#8217;est un peu long, mais l&#8217;essentiel se trouve dans les 15 premières minutes. Enjoy.]]></description>
				<content:encoded><![CDATA[<p>Voici le <a href="http://www.slideshare.net/jugtoulouse/rest-nicolas-zozol-jug-toulouse-20100615">slidecast </a>de ma présentation sur REST au <a href="http://www.jugtoulouse.org/">Toulouse JUG</a>. C&rsquo;est un peu long, mais l&rsquo;essentiel se trouve dans les 15 premières minutes.</p>
<p>Enjoy.</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>GWT n&#8217;est pas tout à fait du Java</title>
		<link>https://blog.developpez.com/java_rest/p7958/ajax/gwt_n_est_pas_tout_a_fait_du_java</link>
		<comments>https://blog.developpez.com/java_rest/p7958/ajax/gwt_n_est_pas_tout_a_fait_du_java#comments</comments>
		<pubDate>Sun, 16 Aug 2009 16:34:21 +0000</pubDate>
		<dc:creator><![CDATA[nicorama]]></dc:creator>
				<category><![CDATA[Ajax]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Web 2.0]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[GWT émule en effet certaines fonctionnalités de Java pour les traduire en Javascript dans l&#8217;environnement d&#8217;un navigateur web standard. Importez simplement une bibliothèque quelconque, comme JDOM, et vous aurez des messages d&#8217;erreurs en pagaye. Seule des bibliothèques spécialement conçues pourront être utilisées à la fois en GWT client et dans n&#8217;importe quelle JVM. A chaque fois que vous écrivez du code Java fonctionnant à la fois côté serveur et client, il faut garder en tête [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>GWT émule en effet certaines fonctionnalités de Java pour les traduire en Javascript <strong>dans l&rsquo;environnement</strong> d&rsquo;un navigateur web standard.<br />
Importez simplement une bibliothèque quelconque, comme JDOM, et vous aurez des messages d&rsquo;erreurs en pagaye. Seule des bibliothèques spécialement conçues pourront être utilisées à la fois en GWT client et dans n&rsquo;importe quelle JVM.<br />
<img src="http://nicolas-zozol.developpez.com/blog/images/gwt/gwt-compatible.png" alt="GWT Compatible" title="" /><br />
<span id="more-26"></span></p>
<p>A chaque fois que vous écrivez du code Java fonctionnant à la fois côté serveur et client, il faut garder en tête de :</p>
<p>&#8211; GWT utilise directement les composants du navigateur : il utilise le DOM interne, ainsi que l&rsquo;objet XmlHttpRequest- et donc ne connait ni Sax, ni JDOM, si le java.net.HttpClient<br />
 &#8211; Ne pas utiliser de fonctions System : il n&rsquo;y a pas de compatibilité entre la JVM et le moteur du navigateur. java.util.Locale est incompatible avec GWT car est capable de lire une Locale par défaut dans le System de la JVM<br />
&#8211; Ne pas lire un fichier : il est très malheureusement impossible d&rsquo;utiliser les ResourceBundle pour internationaliser son code.<br />
&#8211; Ne pas se mêler des Charset : le fonctionnement est trop différent entre la JVM et le navigateur. Je ne suis pas spécialiste, mais concrètement, les fonctions de type public byte[] getBytes(&laquo;&nbsp;UTF-8&Prime;) ne fonctionneront pas. Cela rend les fonctions de types MD5 et base64 sont pour l&rsquo;instant incompatibles.<br />
&#8211; Vérifier <a href="http://code.google.com/webtoolkit/doc/1.6/RefJreEmulation.html">la liste des fonctions émulées</a> : une fonction assez simple comme Class.getSimpleName() n&rsquo;est pas émulée.</p>
<p>Alors est-il possible d&rsquo;écrire une bibliothèque Java utilisable – et utile &#8211; côté client et serveur ? Oui, vous y arriverez en y passant suffisamment de temps et à la simple condition de maîtriser le concept de l&rsquo;interface. Vous pouvez aussi attendre Octobre et la sortie de <a href="http://www.robustaweb.com/library">Robusta Web Library</a> qui vous facilitera grandement la tâche.</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>A la base, je n&#8217;ai rien contre Internet Explorer</title>
		<link>https://blog.developpez.com/java_rest/p5675/xml/web_a_la_base_je_n_ai_rien_contre_intern</link>
		<comments>https://blog.developpez.com/java_rest/p5675/xml/web_a_la_base_je_n_ai_rien_contre_intern#comments</comments>
		<pubDate>Mon, 12 May 2008 14:35:21 +0000</pubDate>
		<dc:creator><![CDATA[nicorama]]></dc:creator>
				<category><![CDATA[JsUnit]]></category>
		<category><![CDATA[Prototype]]></category>
		<category><![CDATA[XML]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Mais les images parlent d&#8217;elles-mêmes : Après cette accroche quelque peu racoleuse, je m&#8217;explique : JsUnit est un outil permettant de tester ses fonctions écrit en JavaScript. C&#8217;est tout simplement l&#8217;équivalent Javascript de JUnit. J&#8217;ai programmé mes tests au fur et à mesure en utilisant Firefox, puis à la fin de la semaine, je me suis rappelé l&#8217;existence d&#8217;Internet Explorer. Au vu des résultats, je me suis dit que la compatibilité présumée de Prototype envers [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Mais les images parlent d&rsquo;elles-mêmes :</p>
<table width="100%" border="0">
<tr>
<td><img src="http://nicolas-zozol.ftp-developpez.com/blog/junit-ff-ie/Avec%20FF.png" alt="Avec FF" title="Avec Firefox" /></td>
<td><img src="http://nicolas-zozol.ftp-developpez.com/blog/junit-ff-ie/AvecIE.png" alt="Avec IE" title="Avec IE" /></td>
</tr>
</table>
<p>Après cette accroche quelque peu racoleuse, je m&rsquo;explique :<br />
<a href="http://www.jsunit.net/">JsUnit </a>est un outil permettant de tester ses fonctions écrit en JavaScript. C&rsquo;est tout simplement l&rsquo;équivalent Javascript de JUnit. J&rsquo;ai programmé mes tests au fur et à mesure en utilisant Firefox, puis à la fin de la semaine, je me suis rappelé l&rsquo;existence d&rsquo;Internet Explorer. Au vu des résultats, je me suis dit que la compatibilité présumée de Prototype envers FF et IE allait prendre du plomb dans l&rsquo;aile. Il m&rsquo;a donc fallu chercher l&rsquo;origine de ces bugs.</p>
<p><span id="more-17"></span></p>
<h3>Première partie : des variations minimes mais suffisantes</h3>
<p>Les lecteurs avisés me diront que je ne teste pas la même chose, puisque j&rsquo;ai 56 tests sur FireFox et 59 sur IE. C&rsquo;est parce que JUnit sous IE s&rsquo;amuse à évaluer des fonctions telles que celle-ci :</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">/** <br />
function testControllers(){}; <br />
*/</div></div>
<p><center>***</center></p>
<p> Avec Prototype, j&rsquo;ai  étendu l&rsquo;objet Element pour y mettre la fonction getParentElement() qui  renvoit le paragraph le plus proche de l&rsquo;élément.<br />
  J&rsquo;utilise donc la ligne :<strong> parent=element.up(&quot;.paragraph&quot;);</strong><br id="s2ok" /><br />
  IE  me renvoit une erreur &quot;Not Implemented&quot;. Je pensais qu&rsquo;il y  avait une erreur avec l&rsquo;implémentation de up() par  Prototype mais en fait mÔnsieur Internet Explorer n&rsquo;accepte pas le nom de variable parent. Essayez<strong> parent=&quot;&quot;</strong> ou <strong>parent=&quot;java&quot;</strong> et vous aurez une erreur &quot;Not Implemented&quot;.<br id="me:o" /><br />
En déclarant la variable<strong> var parent=&quot;&quot;</strong>, tout va mieux.</p>
<p><center>***</center></p>
<p> Il faut ensuite savoir que lorsque vous écriver du code HTML, les moteurs de Firefox et IE les réécrivent derrière vous. Cela se voit en utilisant <strong>alert(monElement.innerHTML)</strong>. J&rsquo;ai repéré deux problèmes notables :</p>
<p>Internet Explorer réécrit <strong><input value=I number=&quot;I&quot;></strong>  au lieu de <strong><input value=&quot;I&quot; number=&quot;I&quot;></strong>. Les guillemets de l&rsquo;attribut value disparait : ce qui fait que value n&rsquo;est d&rsquo;ailleurs plus un attribut au sens xml. Assez génant pour  les tests unitaires tels que celui-ci :<br />
  <strong>assertTrue (divControllers.innerHTML.include(&lsquo; value=&quot;I&quot; &lsquo;));</strong></p>
<p><center>***</center></p>
<p>Internet Explorer réécrit ses balises en majuscules. InnerHTML renvoit H3 au lieu de h3. Il faut donc réécrire les tests :<br />
   <strong>assertTrue(divForm.innerHTML.toLowerCase().include(&lsquo;h3&prime;));</strong><br />
au lieu de   :<br />
   <strong>assertTrue(divForm.innerHTML.include(&lsquo;h3&prime;));</strong></p>
</p>
<h3>Deuxième partie : Le XML avec Prototype</h3>
<p>Dans mes tests unitaires, j&rsquo;utilise une String :</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&nbsp; var result=&amp;quot;&lt;object&gt;&amp;quot;+ <br />
&nbsp; &amp;quot;&lt;lastname&gt;Zozol&lt;/lastname&gt;&amp;quot;+ <br />
&nbsp; &amp;quot;&lt;firstname&gt;Nicolas&lt;/firstname&gt;&amp;quot;+ <br />
&nbsp; &amp;quot;&lt;web-site&gt;http://www.edupassion.com&lt;/web-site&gt;&amp;quot;+ <br />
&nbsp; &amp;quot;&lt;identifiant&gt;1&lt;/identifiant&gt;&amp;quot;+ <br />
&nbsp; &amp;quot;&lt;role&gt;professeur&lt;/role&gt;&amp;quot;+ <br />
&nbsp; &amp;quot;&lt;level&gt;admin&lt;/level&gt;&amp;quot;+ <br />
&nbsp; &amp;quot;&lt;/object&gt;&amp;quot;;</div></div>
<p>Et je teste ma fonction sensée recevoir transport.responseText.</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&nbsp; transport=new Object(); <br />
&nbsp; transport.responseText=result; <br />
&nbsp; assertTrue(maFonction(result)==&amp;quot;tout va bien&amp;quot;);</div></div>
<p>Une fonction utilisant transport.responseText est à priori plus facile à tester qu&rsquo;une autre utilisant transport.responseXML.</p>
<p>  <strong>result.select(&quot;firstname&quot;)[0].innerHTML</strong>  fonctionne très bien sous FireFox et me renvoit &laquo;&nbsp;Nicolas&nbsp;&raquo;. Mais sous IE, impossible de parser un  élément non inscrit dans le document ! Prototype fonctionne bien, mais  considère, sous IE, <strong>result </strong>comme une string, et pas comme un ensemble  d&rsquo;élément organisés en arbre. Il est donc nécessaire de passer par responseXML et d&rsquo;ignorer ici les avantages de Prototype.</p>
<p>Le test unitaire de la fonction traitant le résultat devient plus compliqué : le Mock object n&rsquo;est plus une String mais un document. Si vous avez une petite fonction fiable transformant mon  String en document XML, je suis preneur.</p>
<h3>Finalement, on y arrive.</h3>
<table width="100%" border="0">
<tr>
<td><img src="http://nicolas-zozol.ftp-developpez.com/blog/junit-ff-ie/result-final.png" alt="Resultat" title="Résultat" /></td>
</tr>
</table>
<p><br id="fapi" /></p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Récupérer en Javascript la valeur des boutons Radio Prototype</title>
		<link>https://blog.developpez.com/java_rest/p5353/ajax/recuperer_en_javascript_la_valeur_des_bo</link>
		<comments>https://blog.developpez.com/java_rest/p5353/ajax/recuperer_en_javascript_la_valeur_des_bo#comments</comments>
		<pubDate>Sat, 22 Mar 2008 17:00:43 +0000</pubDate>
		<dc:creator><![CDATA[nicorama]]></dc:creator>
				<category><![CDATA[Ajax]]></category>
		<category><![CDATA[Astuce du Jour]]></category>
		<category><![CDATA[Prototype]]></category>
		<category><![CDATA[Web 2.0]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Classiquement, on récupère la valeur de boutons radios HTML grâce à une balise FORM incorporant l&#8217;attribut action pointant sur un script php : &#60;form action =&#34;script.php&#34; &#62; &#60;input type=&#34;radio&#34; name=&#34;radioGroup&#34; id=&#34;radio&#34; value=&#34;LEAVE_IT&#34; /&#62;Leave It &#60;input type=&#34;radio&#34; name=&#34;radioGroup&#34; id=&#34;radio2&#34; value=&#34;TAKE_IT&#34; /&#62; Take It &#60;input type=&#34;button&#34; value=&#34;OK&#34; /&#62; &#60;/form&#62; Cette astuce du jour a pour but de récupérer le bouton radio en Javascript, avec la bibliothèque Prototype, sans script php, ni même la balise form. En Ajax, [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Classiquement, on récupère la valeur de boutons radios HTML grâce à une balise FORM incorporant l&rsquo;attribut action pointant sur un script php :</p>
<blockquote>
<p>&lt;form action =&quot;script.php&quot; &gt; </p>
<p>&lt;input type=&quot;radio&quot; name=&quot;radioGroup&quot; id=&quot;radio&quot; value=&quot;LEAVE_IT&quot; /&gt;Leave It<br />
&lt;input type=&quot;radio&quot; name=&quot;radioGroup&quot; id=&quot;radio2&quot; value=&quot;TAKE_IT&quot; /&gt;  Take It<br />
&lt;input type=&quot;button&quot; value=&quot;OK&quot; /&gt;</p>
<p>&lt;/form&gt;</p>
</blockquote>
<p>Cette astuce du jour a pour but de récupérer le bouton radio en Javascript, avec la bibliothèque <a href="http://www.prototypejs.org/">Prototype</a>, sans script php, ni même la balise form.<br />
<span id="more-4"></span></p>
<p>En Ajax, on veut éviter le plus souvent possible l&rsquo;action sur les balises FORM. Même si l&rsquo;action est nulle : &lt;form action =&quot;&quot; &gt;, alors le navigateur affiche une nouvelle url : http://mypage?Submit=OK, par exemple. On peut utiliser un bouton de type &laquo;&nbsp;button&nbsp;&raquo; ou &laquo;&nbsp;submit&nbsp;&raquo; utilisant l&rsquo;attribut onclick=&nbsp;&raquo;doIt();&nbsp;&raquo;</p>
<p>La fonction javascript doIt() pourra alors récupérer la valeur du bouton radio avec cette fonction qui ne nécessite que l&rsquo;attribut name du groupe de boutons radio :</p>
<blockquote>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">/** <br />
* Returns the value of the selected radio button in the radio group <br />
* returns &quot;&quot; if the radio is not found or if nothing is checked <br />
* Public Domain <br />
*/ <br />
function $RF(radioName){ <br />
&nbsp; &nbsp; array=$$('input'); <br />
&nbsp; &nbsp; var value=&quot;&quot;; <br />
&nbsp; &nbsp; &nbsp;<br />
&nbsp; &nbsp; array.each( <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; function (radio){ <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (radio.hasAttribute(&quot;name&quot;) &amp;&amp; radio.readAttribute(&quot;name&quot;)==radioName) <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (radio.checked==&quot;true&quot; || radio.checked) value=radio.getValue(); &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;} <br />
&nbsp; &nbsp;);//End of each() <br />
&nbsp; &nbsp;return value; &nbsp;<br />
}</div></div>
</blockquote>
<p>Le nom de la fonction est dans le plus (im)pur style Prototype, RF signifiant RadioForm.<br />
On l&rsquo;utilisera ainsi :</p>
<blockquote>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">function doIt(){ <br />
&nbsp; alert($RF(&quot;radioGroup&quot;)); <br />
}</div></div>
</blockquote>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Astuce du Jour : Création dynamique d&#8217;Elements HTML avec Prototype 1.6</title>
		<link>https://blog.developpez.com/java_rest/p5007/ajax/creation_dynamique_d_elements_html_avec_6</link>
		<comments>https://blog.developpez.com/java_rest/p5007/ajax/creation_dynamique_d_elements_html_avec_6#comments</comments>
		<pubDate>Fri, 01 Feb 2008 06:27:28 +0000</pubDate>
		<dc:creator><![CDATA[nicorama]]></dc:creator>
				<category><![CDATA[Ajax]]></category>
		<category><![CDATA[Astuce du Jour]]></category>
		<category><![CDATA[Prototype]]></category>
		<category><![CDATA[Web 2.0]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[L&#8217;essence d&#8217;Ajax est de manipuler un objet ou un document sur le navigateur sans être géné par le temps de latence du serveur. Cette astuce du jour propose de préparer un peu le terrain en créant dynamiquement sur la page du contenu HTML. Nous verrons dans des articles plus fouillés comment enregistrer la modification sur le serveur. Le deuxième objectif est de documenter en français la fonction Element#insert( ) de Prototype, qui a ce jour [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>L&rsquo;essence d&rsquo;Ajax est de manipuler un objet ou un document sur le navigateur sans être géné par le temps de latence du serveur.</p>
<p>Cette astuce du jour propose de préparer un peu le terrain en créant dynamiquement sur la page du contenu HTML. Nous verrons dans des articles plus fouillés comment enregistrer la modification sur le serveur.<br />
Le deuxième objectif est de documenter en français la fonction <strong>Element#insert( ) de Prototype</strong>, qui a ce jour a été &laquo;&nbsp;oubliée&nbsp;&raquo; par les faiseurs de documentation.</p>
<p>Voici comment créer un Element HTML à l&rsquo;intérieur d&rsquo;un autre élément : </p>
<p><span id="more-15"></span></p>
<blockquote><p>
&lt;script type=&quot;text/javascript&quot; src=&quot;js/prototype.js&quot;&gt;&lt;/script&gt;</p>
<p>&lt;div id=&quot;haut&quot;&gt;Haut&lt;/div&gt;<br />
&lt;div id=&quot;bas&quot;&gt;Bas&lt;/div&gt;</p>
<p>&lt;script type=&quot;text/javascript&quot;&gt;<br />    /* Création de l&rsquo;élément */<br />    var numero = new Element(&lsquo;h3&prime;, { &lsquo;class': &lsquo;pNumber&rsquo; }).update(&lsquo;Titre&rsquo;);<br />    /* Insertion de l&rsquo;élément */<br />    $(&lsquo;haut&rsquo;).insert( {bottom: numero});</p>
<p>&lt;/script&gt;
</p></blockquote>
<p>&laquo;&nbsp;Mon dieu quelle horreur !&nbsp;&raquo; s&rsquo;écrierait tout programmeur orthodoxe de Java. J&rsquo;en fus et pourtant cette écriture complexe est extrèmement productive. Le fait d&rsquo;être compact est également un plus quand c&rsquo;est mélangé au milieu du XHTML.</p>
<p>Pour la création de l&rsquo;élément, vous trouverez la documentation et les exemples <a href="http://www.prototypejs.org/api/element">ici</a>. L&rsquo;insertion de l&rsquo;élément necessite plus d&rsquo;explications :</p>
<p><strong>$(&lsquo;haut&rsquo;)</strong> correspond bien-sûr à l&rsquo;élément HTML ayant pour id : &lsquo;haut&rsquo;. Pour les non-initiés à Prototype, cela correspond à <strong>document.getElementById(&lsquo;haut&rsquo;);</strong> tout en s&rsquo;assurant que <strong>$(&lsquo;haut&rsquo;)</strong> aura des propriétés compatibles avec tous les navigateurs.</p>
<p><strong>{bottom : numero}</strong> contient d&rsquo;une part la position, puis l&rsquo;élément OU le contenu à rajouter.<br />
On peut par exemple faire :</p>
<blockquote>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">$('haut').insert( {after: '&lt;h3 class=&quot;pClass&quot;&gt;Petit paragraph&lt;/h3&gt;'}); <br />
$('haut').insert( {before: 'Un peu de texte, sans balise'});</div></div>
</blockquote>
<p>Il y a quatre positions possibles :  <strong>before, after, top , bottom</strong>. Voici ce que les différentes positions  donnent en pratique avec le code suivant : </p>
<blockquote>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">var numero = new Element('h3', { 'class': 'pNumber' }).update('Titre'); /* nouvel element */ &nbsp; <br />
$('haut').insert( {position : numero }); /* Insertion */</div></div>
</blockquote>
<table width="95%" border="1">
<tr>
<td>position</td>
<td>code créé</td>
<td>resultat</td>
<td width="250">commentaire</td>
</tr>
<tr>
<td>before</td>
<td>
<h3>Titre</h3>
<p></p>
<div id=&quot;haut&quot;>Haut</div>
<p></p>
<div id=&quot;bas&quot;>Bas</div>
</p>
</td>
<td>
<h3>Titre</h3>
<div>Haut</div>
<div>Bas</div>
</td>
<td width="250">L&rsquo;element h3 est créé avant l&rsquo;élément &lsquo;haut&rsquo;</td>
</tr>
<tr>
<td>after</td>
<td>
<div id=&quot;haut&quot;>Haut</div>
<p></p>
<h3>Titre</h3>
<p></p>
<div id=&quot;bas&quot;>Bas</div>
<p>
      </td>
<td>
<div>Haut</div>
<h3>Titre</h3>
<div>Bas</div>
</td>
<td width="250">L&rsquo;element h3 est créé après l&rsquo;élément &lsquo;haut&rsquo;.<br /> <br />
    Il s&rsquo;intercalle donc entre les deux DIV</td>
</tr>
<tr>
<td>top</td>
<td>
<div id=&quot;haut&quot;>
<h3>Titre</h3>
<p>Haut</p></div>
<p></p>
<div id=&quot;bas&quot;>Bas</div>
</td>
<td>
<div>
<h3>Titre</h3>
<p>Haut</p></div>
<div>Bas</div>
</td>
<td width="250">L&rsquo;element h3 est créé à l&rsquo;intérieur de l&rsquo;élément &lsquo;haut&rsquo;.<br /> <br />
      Parmi les fils de  l&rsquo;élément &lsquo;haut&rsquo;, h3 est rajouté en tout premier.</td>
</tr>
<tr>
<td>bottom</td>
<td>
<div id=&quot;haut&quot;>Haut<br />
<h3>Titre</h3>
</div>
<p></p>
<div id=&quot;bas&quot;>Bas</div>
</td>
<td>
<div> Haut<br />
<h3>Titre</h3>
</div>
<div>Bas</div>
</td>
<td width="250">L&rsquo;element h3 est créé à l&rsquo;intérieur de l&rsquo;élément &lsquo;haut&rsquo;.<br />
Parmi les fils de  l&rsquo;élément &lsquo;haut&rsquo;, h3 est rajouté tout à la fin..</td>
</tr>
</table>
<p>Ces quatres possibilités rendent l&rsquo;ajout d&rsquo;Elements bien plus aisés que le temps du document.write(&#8230;). Attention toutefois au style de programmation : comme pour le PHP et sans doute le Ruby, on peut toutefois facilement faire proliférer les abominables guillemets simples, doubles et backslachés.</p>
<p>Dernière astuce :il est possible de raccourcir l&rsquo;écriture en se passant de la position et des accolades en écrivant simplement :</p>
<blockquote><p><code class="codecolorer text default"><span class="text">$('haut').insert( numero);</span></code></p></blockquote>
<p>
Cela revient à utiliser la position <strong>bottom</strong>, ce qui sera probablement 80% de vos insertions.</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
