<?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>Trinidev &#187; Astuce</title>
	<atom:link href="http://www.trinidev.fr/tag/astuce/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.trinidev.fr</link>
	<description>Revue de toutes les technos du Web... et d&#039;ailleurs</description>
	<lastBuildDate>Fri, 30 Sep 2011 16:48:59 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Standards XHTML strict et prises de tête (cachez ces espaces que nous ne saurions voir)</title>
		<link>http://www.trinidev.fr/2009/11/standards-xhtml-strict-et-prises-de-tete-cachez-ces-espaces-que-nous-ne-saurions-voir/</link>
		<comments>http://www.trinidev.fr/2009/11/standards-xhtml-strict-et-prises-de-tete-cachez-ces-espaces-que-nous-ne-saurions-voir/#comments</comments>
		<pubDate>Sat, 21 Nov 2009 14:13:44 +0000</pubDate>
		<dc:creator>Alban Jubert</dc:creator>
				<category><![CDATA[Divers]]></category>
		<category><![CDATA[Astuce]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Images]]></category>
		<category><![CDATA[Standard]]></category>
		<category><![CDATA[XHTML]]></category>

		<guid isPermaLink="false">http://www.trinidev.fr/?p=1007</guid>
		<description><![CDATA[Les standards ont du bon. Malgré tout, parfois, ils apportent leurs lots de petits problèmes sur lesquels on peut passer quelques heures en s&#8217;arrachant les cheveux (et il m&#8217;en reste si peu&#8230;)
Dernier exemple en date, ce sont 2 ou 3 mystérieux pixels qui apparaissent sous les balises images (img) lorsqu&#8217;on utilise le standard XHTML Strict. [...]]]></description>
			<content:encoded><![CDATA[<p>Les standards ont du bon. Malgré tout, parfois, ils apportent leurs lots de petits problèmes sur lesquels on peut passer quelques heures en s&#8217;arrachant les cheveux (et il m&#8217;en reste si peu&#8230;)</p>
<p>Dernier exemple en date, ce sont 2 ou 3 mystérieux pixels qui apparaissent sous les balises images (<code>img</code>) lorsqu&#8217;on utilise le standard XHTML Strict. Pour illustrer le phénomène, prenons ce cas assez classique de montage d&#8217;image découpée en plusieurs tranches assemblées dans un tableau.</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p1007code3'); return false;">View Code</a> HTML</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p10073"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
</pre></td><td class="code" id="p1007code3"><pre class="html" style="font-family:monospace;">&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Strict//EN&quot; 
&quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd&quot;&gt;
&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
    &lt;head&gt;
        &lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=utf-8&quot; /&gt;
        &lt;title&gt;New Web Project&lt;/title&gt;
    &lt;/head&gt;
    &lt;body&gt;
        &lt;table width=&quot;200&quot; border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;
            &lt;tr&gt;
                &lt;td&gt;&lt;img src=&quot;img/P1010478_01.jpg&quot; alt=&quot;&quot; /&gt;&lt;/td&gt;
            &lt;/tr&gt;
            &lt;tr&gt;
                &lt;td&gt;&lt;img src=&quot;img/P1010478_02.jpg&quot; alt=&quot;&quot; /&gt;&lt;/td&gt;
            &lt;/tr&gt;
        &lt;/table&gt;
    &lt;/body&gt;
&lt;/html&gt;</pre></td></tr></table></div>

<p>Ce qui donne comme résultat (sous Firefox) :</p>
<p><img src="http://www.trinidev.fr/wp-content/uploads/2009/11/exemple-img-xhtml-strict-1.jpg" alt="Exemple de rendu des images en XHTML Strict" title="Exemple de rendu des images en XHTML Strict" width="418" height="324" class="alignnone size-full wp-image-1051" /></p>
<p>Les block images &laquo;&nbsp;poussent&nbsp;&raquo; leurs conteneurs (en l&#8217;occurrence la cellule de tableau) de quelques pixel en bas. Ca n&#8217;a évidement rien de très esthétique et ça n&#8217;est pas le résultat attendu.</p>
<p>Donc, à moins de changer la déclaration du type de document HTML, il va falloir ruser.</p>
<p>Pour contourner ce problème, il faudra définir l&#8217;affichage de vos images en mode &laquo;&nbsp;block&nbsp;&raquo; dans votre CSS. Vous pouvez le faire de plusieurs façons :</p>
<ul>
<li>Systématiquement dans une déclaration CSS globale de vos balises img, l&#8217;inconvénient étant que celles-ci produiront un retour à la ligne (dans ce cas, il faudra les définir localement en mode <code>float</code> afin d&#8217;éviter ces retours).</li>
<li>En déclarant localement un style dans vos balises <code>img</code> de type <code>style="display:block;"</code>.</li>
<li>En créant une classe spécifique que vous affecterez aux images nécessitant l&#8217;ajustement.</li>
</ul>
<p>Cette dernière solution peut donner au final :</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p1007code4'); return false;">View Code</a> HTML</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p10074"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
</pre></td><td class="code" id="p1007code4"><pre class="html" style="font-family:monospace;">&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Strict//EN&quot; 
&quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd&quot;&gt;
&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
    &lt;head&gt;
        &lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=utf-8&quot; /&gt;
        &lt;title&gt;New Web Project&lt;/title&gt;
		&lt;style type=&quot;text/css&quot; media=&quot;screen&quot;&gt;
			.block {
				display:block;
			}
		&lt;/style&gt;
    &lt;/head&gt;
    &lt;body&gt;
        &lt;table width=&quot;200&quot; border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;
            &lt;tr&gt;
                &lt;td&gt;&lt;img src=&quot;img/P1010478_01.jpg&quot; alt=&quot;&quot; class=&quot;block&quot; /&gt;&lt;/td&gt;
            &lt;/tr&gt;
            &lt;tr&gt;
                &lt;td&gt;&lt;img src=&quot;img/P1010478_02.jpg&quot; alt=&quot;&quot; class=&quot;block&quot; /&gt;&lt;/td&gt;
            &lt;/tr&gt;
        &lt;/table&gt;
    &lt;/body&gt;
&lt;/html&gt;</pre></td></tr></table></div>

<p>Et voila le rendu enfin correct :</p>
<p><img src="http://www.trinidev.fr/wp-content/uploads/2009/11/exemple-img-xhtml-strict-2.jpg" alt="Rendu des images correct en XHTML Strict (le beau papillon !)" title="Rendu des images correct en XHTML Strict (le beau papillon !)" width="416" height="320" class="alignnone size-full wp-image-1055" /></p>
<p>Allez, à nous les montages de fou en XHTML Strict <img src='http://www.trinidev.fr/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.trinidev.fr%2F2009%2F11%2Fstandards-xhtml-strict-et-prises-de-tete-cachez-ces-espaces-que-nous-ne-saurions-voir%2F&amp;title=Standards%20XHTML%20strict%20et%20prises%20de%20t%C3%AAte%20%28cachez%20ces%20espaces%20que%20nous%20ne%20saurions%20voir%29" id="wpa2a_2">Partager/Sauvegarder</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.trinidev.fr/2009/11/standards-xhtml-strict-et-prises-de-tete-cachez-ces-espaces-que-nous-ne-saurions-voir/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Activer l&#8217;auto-complétion dans Eclipse/Aptana pour les projets CakePHP</title>
		<link>http://www.trinidev.fr/2009/07/activer-lauto-completion-dans-eclipseaptana-pour-le-projet-cakephp/</link>
		<comments>http://www.trinidev.fr/2009/07/activer-lauto-completion-dans-eclipseaptana-pour-le-projet-cakephp/#comments</comments>
		<pubDate>Sat, 25 Jul 2009 13:30:36 +0000</pubDate>
		<dc:creator>Alban Jubert</dc:creator>
				<category><![CDATA[Outils de développement]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Aptana]]></category>
		<category><![CDATA[Astuce]]></category>
		<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[IDE]]></category>
		<category><![CDATA[Outil]]></category>

		<guid isPermaLink="false">http://www.trinidev.fr/?p=879</guid>
		<description><![CDATA[
Un article intéressant vient d&#8217;être publié sur The Bakery. Il décrit une astuce permettant de tirer parti des fonctionnalité d&#8217;auto-complétion de Eclipse/Aptana pour le développement de projets CakePHP (pour les modèles et les helpers notamment).
Ca n&#8217;est pas aussi simple qu&#8217;avec un projet Yii Framework (il n&#8217;y a rien à faire), mais ça a le mérite [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft" src="http://cakephp.org/img/new.png" alt="CakePHP" width="230" height="225" /></p>
<p>Un article intéressant vient d&#8217;être publié sur <a href="http://bakery.cakephp.org/articles/view/how-to-add-autocomplete-to-eclipse-aptana" target="_blank">The Bakery</a>. Il décrit une astuce permettant de tirer parti des fonctionnalité d&#8217;auto-complétion de Eclipse/Aptana pour le développement de projets CakePHP (pour les modèles et les helpers notamment).</p>
<p>Ca n&#8217;est pas aussi simple qu&#8217;avec un projet Yii Framework (il n&#8217;y a rien à faire), mais ça a le mérite de fonctionner <img src='http://www.trinidev.fr/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.trinidev.fr%2F2009%2F07%2Factiver-lauto-completion-dans-eclipseaptana-pour-le-projet-cakephp%2F&amp;title=Activer%20l%26%238217%3Bauto-compl%C3%A9tion%20dans%20Eclipse%2FAptana%20pour%20les%20projets%20CakePHP" id="wpa2a_4">Partager/Sauvegarder</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.trinidev.fr/2009/07/activer-lauto-completion-dans-eclipseaptana-pour-le-projet-cakephp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Nouveau tutorial Yii : Astuce autour des contrôleurs</title>
		<link>http://www.trinidev.fr/2009/06/nouveau-tutorial-yii-astuce-autour-des-controleurs/</link>
		<comments>http://www.trinidev.fr/2009/06/nouveau-tutorial-yii-astuce-autour-des-controleurs/#comments</comments>
		<pubDate>Thu, 11 Jun 2009 16:58:42 +0000</pubDate>
		<dc:creator>Alban Jubert</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Astuce]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[Yii framework]]></category>

		<guid isPermaLink="false">http://www.trinidev.fr/?p=766</guid>
		<description><![CDATA[
On continu le tour des astuces pour Yii Framework avec un petit tuto qui montre comment mutualiser certains comportements et paramètres entre tous les contrôleurs d&#8217;une même application.
Bonne lecture.
]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone" title="Yii Framework" src="http://www.yiiframework.com/images/logo.gif" alt="Yii Framework" width="428" height="55" /></p>
<p>On continu le tour des astuces pour Yii Framework avec <a href="http://www.trinidev.fr/tutoriaux/yii-configurer-les-controleurs-a-partir-dun-controleur-principal/">un petit tuto</a> qui montre comment mutualiser certains comportements et paramètres entre tous les contrôleurs d&#8217;une même application.</p>
<p>Bonne lecture.</p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.trinidev.fr%2F2009%2F06%2Fnouveau-tutorial-yii-astuce-autour-des-controleurs%2F&amp;title=Nouveau%20tutorial%20Yii%20%3A%20Astuce%20autour%20des%20contr%C3%B4leurs" id="wpa2a_6">Partager/Sauvegarder</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.trinidev.fr/2009/06/nouveau-tutorial-yii-astuce-autour-des-controleurs/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Nouveau tutorial Yii &#8211; Comment utiliser le &#171;&#160;profiling&#160;&#187; ?</title>
		<link>http://www.trinidev.fr/2009/05/nouveau-tutorial-yii-2/</link>
		<comments>http://www.trinidev.fr/2009/05/nouveau-tutorial-yii-2/#comments</comments>
		<pubDate>Thu, 21 May 2009 10:57:12 +0000</pubDate>
		<dc:creator>Alban Jubert</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Astuce]]></category>
		<category><![CDATA[Performances]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[Yii framework]]></category>

		<guid isPermaLink="false">http://www.trinidev.fr/?p=682</guid>
		<description><![CDATA[
Un petit tuto Yii qui montre comment utiliser les fonctions de &#171;&#160;profiling&#160;&#187; permettant d&#8217;améliorer les performances d&#8217;une application est disponible ici. Vos remarques et commentaires sont les bienvenus.
Bonne lecture  
]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone" title="Yii Framework" src="http://www.yiiframework.com/images/logo.gif" alt="Yii Framework" width="428" height="55" /></p>
<p>Un petit tuto Yii qui montre comment utiliser les fonctions de &laquo;&nbsp;<strong>profiling</strong>&nbsp;&raquo; permettant d&#8217;améliorer les performances d&#8217;une application est disponible <a href="http://www.trinidev.fr/tutoriaux/yii-optimiser-les-performances-grace-au-profiling/">ici</a>. Vos remarques et commentaires sont les bienvenus.</p>
<p>Bonne lecture <img src='http://www.trinidev.fr/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.trinidev.fr%2F2009%2F05%2Fnouveau-tutorial-yii-2%2F&amp;title=Nouveau%20tutorial%20Yii%20%26%238211%3B%20Comment%20utiliser%20le%20%26laquo%3B%26nbsp%3Bprofiling%26nbsp%3B%26raquo%3B%20%3F" id="wpa2a_8">Partager/Sauvegarder</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.trinidev.fr/2009/05/nouveau-tutorial-yii-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Vérifier les modifications de formulaires avec jQuery</title>
		<link>http://www.trinidev.fr/2009/03/verifier-les-modifications-de-formulaires-avec-jquery/</link>
		<comments>http://www.trinidev.fr/2009/03/verifier-les-modifications-de-formulaires-avec-jquery/#comments</comments>
		<pubDate>Sun, 15 Mar 2009 13:55:06 +0000</pubDate>
		<dc:creator>Alban Jubert</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Astuce]]></category>
		<category><![CDATA[Formulaire]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Validation]]></category>

		<guid isPermaLink="false">http://www.trinidev.fr/?p=386</guid>
		<description><![CDATA[Vous souhaitez alerter vos utilisateurs s&#8217;ils ont modifié le contenu d&#8217;un formulaire et qu&#8217;ils s&#8217;apprêtent à quitter la page par l&#8217;intermédiaire d&#8217;un lien sans avoir validé ?
Un petit javascript permet de facilement accomplir cela.

?View Code JAVASCRIPT1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
jQuery&#40;document&#41;.ready&#40;function&#40;&#41; &#123;
	$&#40;window&#41;.attr&#40;&#34;isDirty&#34;, false&#41;;
	$&#40;&#34;:input&#34;&#41;.bind&#40;&#34;change&#34;, function&#40;event&#41; &#123;
				if &#40;event.target.value != event.target.defaultValue&#41; &#123;
					$&#40;window&#41;.attr&#40;&#34;isDirty&#34;, true&#41;;
				&#125;
			&#125;&#41;;
	$&#40;&#34;:checkbox,:radio&#34;&#41;.bind&#40;&#34;click&#34;, function&#40;event&#41; &#123;
				if &#40;event.target.checked != event.target.defaultChecked&#41; &#123;
					$&#40;window&#41;.attr&#40;&#34;isDirty&#34;, true&#41;;
				&#125;
			&#125;&#41;;
	$&#40;&#34;a, button&#34;&#41;.bind&#40;&#34;click&#34;, function&#40;event&#41; &#123;
		if &#40;window.isDirty&#41; &#123;
			return confirm&#40;&#34;Etes-vous sûre [...]]]></description>
			<content:encoded><![CDATA[<p>Vous souhaitez alerter vos utilisateurs s&#8217;ils ont modifié le contenu d&#8217;un formulaire et qu&#8217;ils s&#8217;apprêtent à quitter la page par l&#8217;intermédiaire d&#8217;un lien sans avoir validé ?</p>
<p>Un petit javascript permet de facilement accomplir cela.</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p386code6'); return false;">View Code</a> JAVASCRIPT</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p3866"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
</pre></td><td class="code" id="p386code6"><pre class="javascript" style="font-family:monospace;">jQuery<span style="color: #009900;">&#40;</span>document<span style="color: #009900;">&#41;</span>.<span style="color: #660066;">ready</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	$<span style="color: #009900;">&#40;</span>window<span style="color: #009900;">&#41;</span>.<span style="color: #660066;">attr</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;isDirty&quot;</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">false</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;:input&quot;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">bind</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;change&quot;</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>event<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
				<span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>event.<span style="color: #660066;">target</span>.<span style="color: #660066;">value</span> <span style="color: #339933;">!=</span> event.<span style="color: #660066;">target</span>.<span style="color: #660066;">defaultValue</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
					$<span style="color: #009900;">&#40;</span>window<span style="color: #009900;">&#41;</span>.<span style="color: #660066;">attr</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;isDirty&quot;</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
				<span style="color: #009900;">&#125;</span>
			<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;:checkbox,:radio&quot;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">bind</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;click&quot;</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>event<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
				<span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>event.<span style="color: #660066;">target</span>.<span style="color: #660066;">checked</span> <span style="color: #339933;">!=</span> event.<span style="color: #660066;">target</span>.<span style="color: #660066;">defaultChecked</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
					$<span style="color: #009900;">&#40;</span>window<span style="color: #009900;">&#41;</span>.<span style="color: #660066;">attr</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;isDirty&quot;</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
				<span style="color: #009900;">&#125;</span>
			<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;a, button&quot;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">bind</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;click&quot;</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>event<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>window.<span style="color: #660066;">isDirty</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			<span style="color: #000066; font-weight: bold;">return</span> <span style="color: #000066;">confirm</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;Etes-vous sûre de vouloir quitter cette page sans enregistrer ?&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
	<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>L&#8217;astuce consiste à créer un attribut <code>isDirty</code> attaché à la page et à en changer l&#8217;état dès qu&#8217;une valeur de champ a été modifiée. Au chargement de la page, on attache des listeners aux champs, checkbox et boutons radio qui vont scruter leurs éventuelles modifications. Lorsque l&#8217;utilisateur clique sur un lien, on vérifie juste la valeur de cet état pour déclencher une demande de confirmation le cas échéant (qui dans le cas négatif, interrompt l&#8217;événement de changement de page).</p>
<p>On peut facilement adapter ce code à Prototype ou à MooTools afin de réaliser la même chose avec ses librairies.</p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.trinidev.fr%2F2009%2F03%2Fverifier-les-modifications-de-formulaires-avec-jquery%2F&amp;title=V%C3%A9rifier%20les%20modifications%20de%20formulaires%20avec%20jQuery" id="wpa2a_10">Partager/Sauvegarder</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.trinidev.fr/2009/03/verifier-les-modifications-de-formulaires-avec-jquery/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Accéder à l&#8217;aide de Flash CS4 en local</title>
		<link>http://www.trinidev.fr/2009/02/acceder-a-laide-de-flash-cs4-en-local/</link>
		<comments>http://www.trinidev.fr/2009/02/acceder-a-laide-de-flash-cs4-en-local/#comments</comments>
		<pubDate>Sun, 22 Feb 2009 17:49:23 +0000</pubDate>
		<dc:creator>Pascal Achard</dc:creator>
				<category><![CDATA[Adobe Flash]]></category>
		<category><![CDATA[Astuce]]></category>
		<category><![CDATA[Flash CS4]]></category>
		<category><![CDATA[Video]]></category>

		<guid isPermaLink="false">http://www.trinidev.fr/?p=340</guid>
		<description><![CDATA[Dans Flash CS4, l&#8217;aide n&#8217;est plus intégrée dans l&#8217;application. Quand on clique sur F1, on ouvre le navigateur et on se connecte à l&#8217;aide en ligne. C&#8217;est pas très pratique quand on n&#8217;est pas connecté. Heureusement, il y à une petite astuce qui permet d&#8217;accéder à l&#8217;aide en local.
J&#8217;ai fait une petite vidéo qui explique [...]]]></description>
			<content:encoded><![CDATA[<p>Dans Flash CS4, l&#8217;aide n&#8217;est plus intégrée dans l&#8217;application. Quand on clique sur F1, on ouvre le navigateur et on se connecte à l&#8217;aide en ligne. C&#8217;est pas très pratique quand on n&#8217;est pas connecté. Heureusement, il y à une petite astuce qui permet d&#8217;accéder à l&#8217;aide en local.<br />
J&#8217;ai fait une petite <a href="http://www.trinidev.fr/2009/02/acceder-a-laide-de-flash-cs4-en-local/" target="_self">vidéo</a> qui explique comment procéder.</p>
<p><span id="more-340"></span></p>

<p>Voilà, j&#8217;éspère que ça vous aidera&#8230;</p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.trinidev.fr%2F2009%2F02%2Facceder-a-laide-de-flash-cs4-en-local%2F&amp;title=Acc%C3%A9der%20%C3%A0%20l%26%238217%3Baide%20de%20Flash%20CS4%20en%20local" id="wpa2a_12">Partager/Sauvegarder</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.trinidev.fr/2009/02/acceder-a-laide-de-flash-cs4-en-local/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Tester Google Maps en local : c&#8217;est possible</title>
		<link>http://www.trinidev.fr/2009/02/tester-google-maps-en-local-cest-possible/</link>
		<comments>http://www.trinidev.fr/2009/02/tester-google-maps-en-local-cest-possible/#comments</comments>
		<pubDate>Tue, 10 Feb 2009 12:26:30 +0000</pubDate>
		<dc:creator>Alban Jubert</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[Astuce]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Maps]]></category>

		<guid isPermaLink="false">http://www.trinidev.fr/?p=230</guid>
		<description><![CDATA[Les idées reçues ont la vie dure. J&#8217;ai toujours été persuadé qu&#8217;il n&#8217;était pas possible d&#8217;utiliser les API Google et Google Maps en particulier autrement que sur un serveur de production possédant un nom de domaine valide.
Et bien, ça n&#8217;est pas vrai du tout. En réalité, on peut parfaitement effectuer une demande de clé en [...]]]></description>
			<content:encoded><![CDATA[<p>Les idées reçues ont la vie dure. J&#8217;ai toujours été persuadé qu&#8217;il n&#8217;était pas possible d&#8217;utiliser les API Google et Google Maps en particulier autrement que sur un serveur de production possédant un nom de domaine valide.</p>
<p>Et bien, ça n&#8217;est pas vrai du tout. En réalité, on peut parfaitement effectuer une demande de clé en saisissant un nom de domaine comme <code>http://localhost/</code>. Et ça fonctionne.</p>
<p>Je sais que certains d&#8217;entre vous connaissaient déjà l&#8217;astuce. Moi pas. Et sans doute reste-t-il encore quelques développeurs dans l&#8217;ignorance. Bref, comme on dit, on en apprend tous les jours <img src='http://www.trinidev.fr/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.trinidev.fr%2F2009%2F02%2Ftester-google-maps-en-local-cest-possible%2F&amp;title=Tester%20Google%20Maps%20en%20local%20%3A%20c%26%238217%3Best%20possible" id="wpa2a_14">Partager/Sauvegarder</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.trinidev.fr/2009/02/tester-google-maps-en-local-cest-possible/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

<!-- Served from: www.trinidev.fr @ 2012-02-17 16:32:06 by W3 Total Cache -->
