<?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>The Tech Guy FR &#187; javascript</title>
	<atom:link href="http://blog.juliencrouzet.fr/tag/javascript/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.juliencrouzet.fr</link>
	<description>Le blog de Julien CROUZET</description>
	<lastBuildDate>Thu, 01 Jul 2010 19:38:12 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Rendez vos textarea sexy avec tx-content-assist</title>
		<link>http://blog.juliencrouzet.fr/558/rendez-vos-textarea-sexy-avec-tx-content-assist/</link>
		<comments>http://blog.juliencrouzet.fr/558/rendez-vos-textarea-sexy-avec-tx-content-assist/#comments</comments>
		<pubDate>Tue, 22 Jun 2010 14:02:28 +0000</pubDate>
		<dc:creator>c2c</dc:creator>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://blog.juliencrouzet.fr/?p=558</guid>
		<description><![CDATA[
Warning: call_user_func_array() expects parameter 1 to be a valid callback, first array member is not a valid class name or object in /home/www/blog.juliencrouzet.fr/wp-includes/plugin.php on line 166

Call Stack:
    0.0001     623456   1. {main}() /home/www/blog.juliencrouzet.fr/index.php:0
    0.0002     628984   2. require('/home/www/blog.juliencrouzet.fr/wp-blog-header.php') /home/www/blog.juliencrouzet.fr/index.php:17
    0.1982   37936632   3. require_once('/home/www/blog.juliencrouzet.fr/wp-includes/template-loader.php') /home/www/blog.juliencrouzet.fr/wp-blog-header.php:16
    0.1991   37939552   4. do_feed() /home/www/blog.juliencrouzet.fr/wp-includes/template-loader.php:14
    0.1991   37939832   5. do_action() /home/www/blog.juliencrouzet.fr/wp-includes/functions.php:1721
    0.1991   37941856   6. call_user_func_array() /home/www/blog.juliencrouzet.fr/wp-includes/plugin.php:395
    0.1991   37941912   7. do_feed_rss2() /home/www/blog.juliencrouzet.fr/wp-includes/plugin.php:0
    0.1991   37942104   8. load_template() /home/www/blog.juliencrouzet.fr/wp-includes/functions.php:1753
    0.1992   38004272   9. require_once('/home/www/blog.juliencrouzet.fr/wp-includes/feed-rss2.php') /home/www/blog.juliencrouzet.fr/wp-includes/theme.php:1087
    0.2042   38048032  10. the_excerpt_rss() /home/www/blog.juliencrouzet.fr/wp-includes/feed-rss2.php:46
    0.2057   38051648  11. apply_filters() /home/www/blog.juliencrouzet.fr/wp-includes/feed.php:177
    0.2059   38054352  12. call_user_func_array() /home/www/blog.juliencrouzet.fr/wp-includes/plugin.php:166

]]></description>
			<content:encoded><![CDATA[<div id="attachment_559" class="wp-caption aligncenter" style="width: 290px"><a href="http://blog.juliencrouzet.fr/wp-content/uploads/2010/06/2010-06-22_1558.png" rel="lightbox[558]"><img class="size-full wp-image-559" title="tx-content-assist" src="http://blog.juliencrouzet.fr/wp-content/uploads/2010/06/2010-06-22_1558.png" alt="" width="280" height="113" /></a><p class="wp-caption-text">Classe !</p></div>
<p style="text-align: left;">
<p style="text-align: left;">Pouvoir faire de la complétion dans un &lt;textarea&gt;, c&#8217;est possible, avec <a href="http://github.com/sergeche/tx-content-assist/">tx-content-assist</a>, c&#8217;est possible !</p>
<p style="text-align: left;">C&#8217;est en fait une réécriture du moteur d&#8217;assistance de code de Eclipse, et c&#8217;est même possible de le déclencher avec &laquo;&nbsp;Ctrl+Espace&nbsp;&raquo; / &laquo;&nbsp;Alt + Espace&nbsp;&raquo; (enfin, certains navigateurs l&#8217;ont déjà reservé).</p>
<p style="text-align: left;">Pour une petite démo, c&#8217;est par <a href="http://media.chikuyonok.ru/content-assist/">ici</a>, pour les sources, c&#8217;est sur <a href="http://github.com/sergeche/tx-content-assist/">github</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.juliencrouzet.fr/558/rendez-vos-textarea-sexy-avec-tx-content-assist/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>SketchPad : L&#039;outil de dessin / graphiques online garanti sans flash !</title>
		<link>http://blog.juliencrouzet.fr/513/sketchpad-loutil-de-dessin-graphiques-online-garanti-sans-flash/</link>
		<comments>http://blog.juliencrouzet.fr/513/sketchpad-loutil-de-dessin-graphiques-online-garanti-sans-flash/#comments</comments>
		<pubDate>Wed, 10 Feb 2010 11:21:26 +0000</pubDate>
		<dc:creator>c2c</dc:creator>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[graphisme]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[navigateurs]]></category>

		<guid isPermaLink="false">http://blog.juliencrouzet.fr/?p=513</guid>
		<description><![CDATA[
Warning: call_user_func_array() expects parameter 1 to be a valid callback, first array member is not a valid class name or object in /home/www/blog.juliencrouzet.fr/wp-includes/plugin.php on line 166

Call Stack:
    0.0001     623456   1. {main}() /home/www/blog.juliencrouzet.fr/index.php:0
    0.0002     628984   2. require('/home/www/blog.juliencrouzet.fr/wp-blog-header.php') /home/www/blog.juliencrouzet.fr/index.php:17
    0.1982   37936632   3. require_once('/home/www/blog.juliencrouzet.fr/wp-includes/template-loader.php') /home/www/blog.juliencrouzet.fr/wp-blog-header.php:16
    0.1991   37939552   4. do_feed() /home/www/blog.juliencrouzet.fr/wp-includes/template-loader.php:14
    0.1991   37939832   5. do_action() /home/www/blog.juliencrouzet.fr/wp-includes/functions.php:1721
    0.1991   37941856   6. call_user_func_array() /home/www/blog.juliencrouzet.fr/wp-includes/plugin.php:395
    0.1991   37941912   7. do_feed_rss2() /home/www/blog.juliencrouzet.fr/wp-includes/plugin.php:0
    0.1991   37942104   8. load_template() /home/www/blog.juliencrouzet.fr/wp-includes/functions.php:1753
    0.1992   38004272   9. require_once('/home/www/blog.juliencrouzet.fr/wp-includes/feed-rss2.php') /home/www/blog.juliencrouzet.fr/wp-includes/theme.php:1087
    0.2103   38054800  10. the_excerpt_rss() /home/www/blog.juliencrouzet.fr/wp-includes/feed-rss2.php:46
    0.2115   38057400  11. apply_filters() /home/www/blog.juliencrouzet.fr/wp-includes/feed.php:177
    0.2117   38059800  12. call_user_func_array() /home/www/blog.juliencrouzet.fr/wp-includes/plugin.php:166

]]></description>
			<content:encoded><![CDATA[<div id="attachment_514" class="wp-caption aligncenter" style="width: 312px"><a href="http://blog.juliencrouzet.fr/wp-content/uploads/2010/02/noflash.png" rel="lightbox[513]"><img class="size-medium wp-image-514" title="No Flash" src="http://blog.juliencrouzet.fr/wp-content/uploads/2010/02/noflash-300x86.png" alt="Pas de flash, pas de chocolat" width="302" height="86" /></a><p class="wp-caption-text">Pas de flash, pas de chocolat</p></div>
<p>Futurs possesseurs de l&#8217;iPad, farouches combattant du Flash, vous voulez vous aussi pouvoir utiliser un outil de dessin On Line ?</p>
<p>Alors voici <a href="http://mugtug.com/sketchpad/">SketchPad</a>, une application de dessin proche de <a href="https://www.photoshop.com/">Photoshop Express</a> et des autres outils d&#8217;online painting, mais avec un particularité : Il est développé en HTML5/Javascript. Tout est donc contrôlé via des <a href="https://developer.mozilla.org/en/Canvas_tutorial">Canvas</a>, vous n&#8217;avez donc pas besoin d&#8217;avoir Flash sur votre machine (mais un navigateur <a href="http://en.wikipedia.org/wiki/Comparison_of_layout_engines_%28HTML5%29#Elements">compatible HTML5 qui supporte les Canvas</a>).</p>
<p>Have fun !</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.juliencrouzet.fr/513/sketchpad-loutil-de-dessin-graphiques-online-garanti-sans-flash/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Le DOM, c&#039;est le bordel !</title>
		<link>http://blog.juliencrouzet.fr/277/le-dom-cest-le-bordel/</link>
		<comments>http://blog.juliencrouzet.fr/277/le-dom-cest-le-bordel/#comments</comments>
		<pubDate>Mon, 09 Mar 2009 11:13:09 +0000</pubDate>
		<dc:creator>c2c</dc:creator>
				<category><![CDATA[code]]></category>
		<category><![CDATA[geek]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[Tech]]></category>

		<guid isPermaLink="false">http://blog.juliencrouzet.fr/?p=277</guid>
		<description><![CDATA[
Warning: call_user_func_array() expects parameter 1 to be a valid callback, first array member is not a valid class name or object in /home/www/blog.juliencrouzet.fr/wp-includes/plugin.php on line 166

Call Stack:
    0.0001     623456   1. {main}() /home/www/blog.juliencrouzet.fr/index.php:0
    0.0002     628984   2. require('/home/www/blog.juliencrouzet.fr/wp-blog-header.php') /home/www/blog.juliencrouzet.fr/index.php:17
    0.1982   37936632   3. require_once('/home/www/blog.juliencrouzet.fr/wp-includes/template-loader.php') /home/www/blog.juliencrouzet.fr/wp-blog-header.php:16
    0.1991   37939552   4. do_feed() /home/www/blog.juliencrouzet.fr/wp-includes/template-loader.php:14
    0.1991   37939832   5. do_action() /home/www/blog.juliencrouzet.fr/wp-includes/functions.php:1721
    0.1991   37941856   6. call_user_func_array() /home/www/blog.juliencrouzet.fr/wp-includes/plugin.php:395
    0.1991   37941912   7. do_feed_rss2() /home/www/blog.juliencrouzet.fr/wp-includes/plugin.php:0
    0.1991   37942104   8. load_template() /home/www/blog.juliencrouzet.fr/wp-includes/functions.php:1753
    0.1992   38004272   9. require_once('/home/www/blog.juliencrouzet.fr/wp-includes/feed-rss2.php') /home/www/blog.juliencrouzet.fr/wp-includes/theme.php:1087
    0.2157   38058704  10. the_excerpt_rss() /home/www/blog.juliencrouzet.fr/wp-includes/feed-rss2.php:46
    0.2183   38061272  11. apply_filters() /home/www/blog.juliencrouzet.fr/wp-includes/feed.php:177
    0.2185   38063552  12. call_user_func_array() /home/www/blog.juliencrouzet.fr/wp-includes/plugin.php:166

]]></description>
			<content:encoded><![CDATA[<p>Une super présentation par John Resig (le jeune créateur de jQuery, entre autres) qui nous explique avec le sourire pourquoi le DOM, c&#8217;est le bordel <img src='http://blog.juliencrouzet.fr/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p style="text-align: center;"><object width="425" height="355" data="http://static.slideshare.net/swf/ssplayer2.swf?doc=yahoodom-1233608138666908-3&amp;stripped_title=the-dom-is-a-mess-yahoo" type="application/x-shockwave-flash"><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><param name="src" value="http://static.slideshare.net/swf/ssplayer2.swf?doc=yahoodom-1233608138666908-3&amp;stripped_title=the-dom-is-a-mess-yahoo" /><param name="allowfullscreen" value="true" /></object></p>
<div id="__ss_981615" style="width: 425px; text-align: left;"><a style="font:14px Helvetica,Arial,Sans-serif;display:block;margin:12px 0 3px 0;text-decoration:underline;" title="The DOM is a Mess @ Yahoo" href="http://www.slideshare.net/jeresig/the-dom-is-a-mess-yahoo?type=presentation">The DOM is a Mess @ Yahoo</a></div>
<div id="__ss_981615" style="width: 425px; text-align: left;"></div>
<p><span id="more-277"></span></p>
<p style="text-align: center;"><object width="512" height="322" data="http://d.yimg.com/static.video.yahoo.com/yep/YV_YEP.swf?ver=2.2.34" type="application/x-shockwave-flash"><param name="allowFullScreen" value="true" /><param name="AllowScriptAccess" value="always" /><param name="bgcolor" value="#000000" /><param name="flashVars" value="id=11812238&amp;vid=4403981&amp;lang=en-us&amp;intl=us&amp;thumbUrl=http%3A//l.yimg.com/a/p/i/bcst/videosearch/899/79387316.jpeg&amp;embed=1" /><param name="src" value="http://d.yimg.com/static.video.yahoo.com/yep/YV_YEP.swf?ver=2.2.34" /><param name="flashvars" value="id=11812238&amp;vid=4403981&amp;lang=en-us&amp;intl=us&amp;thumbUrl=http%3A//l.yimg.com/a/p/i/bcst/videosearch/899/79387316.jpeg&amp;embed=1" /><param name="allowfullscreen" value="true" /></object></p>
<p style="text-align: left;">
<div><a href="http://video.yahoo.com/watch/4403981/11812238">John Resig: &laquo;&nbsp;The DOM Is a  Mess&nbsp;&raquo;</a> @ <a href="http://video.yahoo.com">Yahoo! Video</a></div>
]]></content:encoded>
			<wfw:commentRss>http://blog.juliencrouzet.fr/277/le-dom-cest-le-bordel/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>jQuery 1.3 &#8230; Champagne !</title>
		<link>http://blog.juliencrouzet.fr/121/jquery-13-champagne/</link>
		<comments>http://blog.juliencrouzet.fr/121/jquery-13-champagne/#comments</comments>
		<pubDate>Thu, 15 Jan 2009 10:10:39 +0000</pubDate>
		<dc:creator>c2c</dc:creator>
				<category><![CDATA[code]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Tech]]></category>

		<guid isPermaLink="false">http://blog.juliencrouzet.fr/?p=121</guid>
		<description><![CDATA[
Warning: call_user_func_array() expects parameter 1 to be a valid callback, first array member is not a valid class name or object in /home/www/blog.juliencrouzet.fr/wp-includes/plugin.php on line 166

Call Stack:
    0.0001     623456   1. {main}() /home/www/blog.juliencrouzet.fr/index.php:0
    0.0002     628984   2. require('/home/www/blog.juliencrouzet.fr/wp-blog-header.php') /home/www/blog.juliencrouzet.fr/index.php:17
    0.1982   37936632   3. require_once('/home/www/blog.juliencrouzet.fr/wp-includes/template-loader.php') /home/www/blog.juliencrouzet.fr/wp-blog-header.php:16
    0.1991   37939552   4. do_feed() /home/www/blog.juliencrouzet.fr/wp-includes/template-loader.php:14
    0.1991   37939832   5. do_action() /home/www/blog.juliencrouzet.fr/wp-includes/functions.php:1721
    0.1991   37941856   6. call_user_func_array() /home/www/blog.juliencrouzet.fr/wp-includes/plugin.php:395
    0.1991   37941912   7. do_feed_rss2() /home/www/blog.juliencrouzet.fr/wp-includes/plugin.php:0
    0.1991   37942104   8. load_template() /home/www/blog.juliencrouzet.fr/wp-includes/functions.php:1753
    0.1992   38004272   9. require_once('/home/www/blog.juliencrouzet.fr/wp-includes/feed-rss2.php') /home/www/blog.juliencrouzet.fr/wp-includes/theme.php:1087
    0.2235   38062608  10. the_excerpt_rss() /home/www/blog.juliencrouzet.fr/wp-includes/feed-rss2.php:46
    0.2252   38065184  11. apply_filters() /home/www/blog.juliencrouzet.fr/wp-includes/feed.php:177
    0.2254   38067560  12. call_user_func_array() /home/www/blog.juliencrouzet.fr/wp-includes/plugin.php:166

]]></description>
			<content:encoded><![CDATA[<div id="attachment_112" class="wp-caption aligncenter" style="width: 241px"><img class="size-full wp-image-112 " title="jquery_logo" src="http://blog.juliencrouzet.fr/wp-content/uploads/2008/12/jquery_logo.gif" alt="jquery_logo" width="231" height="85" /><p class="wp-caption-text">jQuery 1.3 sort, enfin <img src='http://blog.juliencrouzet.fr/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p></div>
<p>Youpi, houra et autre bravos &#8230; <a href="http://docs.jquery.com/Release:jQuery_1.3">jQuery 1.3</a> est enfin sortie des cartons !</p>
<p>Ce n&#8217;est pas juste une version de plus, c&#8217;est (a mon humble avis) la release qui va faire de jQuery THE librairie Javascript.</p>
<ul>
<li><a href="http://sizzlejs.com/">Sizzle</a>, le moteur de sélecteur CSS dont j&#8217;avais <a href="http://blog.juliencrouzet.fr/2008/12/19/optimiser-l-utilisation-de-jquery/">déjà parlé</a> est enfin en place, avec des performances bluffantes ;</li>
<li>jQuery devient la première librairie JS qui ne fait pas de <a href="http://www.howtocreate.co.uk/tutorials/jsexamples/sniffer.html">Browser Sniffing</a>, et il <a href="http://www.jibbering.com/faq/faq_notes/not_browser_detect.html">était temps</a> ;</li>
<li>Une grosse réécriture de l&#8217;HTML Injection, avec aussi, un gain de performance étonnant ;</li>
<li>Pleins d&#8217;autres choses !</li>
</ul>
<p>Re youpi ! Re bravo !</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.juliencrouzet.fr/121/jquery-13-champagne/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Optimiser l&#039;utilisation de jQuery</title>
		<link>http://blog.juliencrouzet.fr/84/optimiser-l-utilisation-de-jquery/</link>
		<comments>http://blog.juliencrouzet.fr/84/optimiser-l-utilisation-de-jquery/#comments</comments>
		<pubDate>Thu, 18 Dec 2008 23:16:07 +0000</pubDate>
		<dc:creator>c2c</dc:creator>
				<category><![CDATA[javascript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Tech]]></category>

		<guid isPermaLink="false">http://blog.juliencrouzet.fr/?p=84</guid>
		<description><![CDATA[
Warning: call_user_func_array() expects parameter 1 to be a valid callback, first array member is not a valid class name or object in /home/www/blog.juliencrouzet.fr/wp-includes/plugin.php on line 166

Call Stack:
    0.0001     623456   1. {main}() /home/www/blog.juliencrouzet.fr/index.php:0
    0.0002     628984   2. require('/home/www/blog.juliencrouzet.fr/wp-blog-header.php') /home/www/blog.juliencrouzet.fr/index.php:17
    0.1982   37936632   3. require_once('/home/www/blog.juliencrouzet.fr/wp-includes/template-loader.php') /home/www/blog.juliencrouzet.fr/wp-blog-header.php:16
    0.1991   37939552   4. do_feed() /home/www/blog.juliencrouzet.fr/wp-includes/template-loader.php:14
    0.1991   37939832   5. do_action() /home/www/blog.juliencrouzet.fr/wp-includes/functions.php:1721
    0.1991   37941856   6. call_user_func_array() /home/www/blog.juliencrouzet.fr/wp-includes/plugin.php:395
    0.1991   37941912   7. do_feed_rss2() /home/www/blog.juliencrouzet.fr/wp-includes/plugin.php:0
    0.1991   37942104   8. load_template() /home/www/blog.juliencrouzet.fr/wp-includes/functions.php:1753
    0.1992   38004272   9. require_once('/home/www/blog.juliencrouzet.fr/wp-includes/feed-rss2.php') /home/www/blog.juliencrouzet.fr/wp-includes/theme.php:1087
    0.2299   38066512  10. the_excerpt_rss() /home/www/blog.juliencrouzet.fr/wp-includes/feed-rss2.php:46
    0.2375   38069144  11. apply_filters() /home/www/blog.juliencrouzet.fr/wp-includes/feed.php:177
    0.2377   38071576  12. call_user_func_array() /home/www/blog.juliencrouzet.fr/wp-includes/plugin.php:166

]]></description>
			<content:encoded><![CDATA[<p><img src="http://blog.juliencrouzet.fr/wp-content/uploads/2008/12/jquery_logo.gif" alt="jquery_logo" title="jquery_logo" width="231" height="85" class="aligncenter size-full wp-image-112" /><br />
<a href="http://jquery.com/">jQuery </a>est aujourd&#8217;hui un incontournable et semble avoir pris le dessus sur <a href="http://www.prototypejs.org">Prototype</a>, <a href="http://dojotoolkit.org">Dojo</a>, etc.  et ne cesse de s&#8217;améliorer, notamment grâce à <a href="http://github.com/jeresig/sizzle/tree/master">Sizzle</a>, le nouveau moteur de sélecteur CSS. Cependant comme toute librairie son efficacité dépend en premier lieu de la manière dont on l&#8217;utilise.</p>
<p>Voici donc un petit panaché d&#8217;astuces d&#8217;optimisation de jQuery, un peuplus poussées que de <a href="http://code.google.com/p/minify">combiner et minifier</a> les sources.<br />
<span id="more-84"></span></p>
<h3>Payez-vous le meilleur des CDN !</h3>
<p>Grâce à <a href="http://code.google.com/intl/fr/apis/ajaxlibs/">Google AJAX API</a>, vous allez pouvoir utiliser le plus puissant, le plus rapide et le plus stable des <a href="http://fr.wikipedia.org/wiki/Content_Delivery_Network">CDN</a>, j&#8217;ai nommé <a href="http://www.google.fr">Google</a> !</p>
<p>Les avantages sont énormes :</p>
<ul>
<li>Vous réduisez le délai de connexion et de téléchargement de vous utilisateurs : Google a forcément des serveurs près de chez eux, voir dans leur garage <img src='http://blog.juliencrouzet.fr/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  ;</li>
<li>Vous réduisez la charge de votre serveur : Une requête en moins sur votre serveur, c&#8217;est plein de ressources laissées libres ;</li>
<li>Vous réduisez le temps de chargement : Vous êtes probablement pas le premier site consulté utilisant Google AJAX API, jQuery est probablement déjà dans le cache de votre utilisateur ;</li>
<li>Vous réduisez vos frais de bande passante : jQuery, c&#8217;est quand même 94Ko de code javascript. Sur un million de visiteurs, c&#8217;est presque 100Go économisé.</li>
</ul>
<p>L&#8217;intégration est super simple, après avoir inclut le fichier source :</p>
<pre lang="HTML"><script src="http://www.google.com/jsapi" type="text/javascript"></script></pre>
<p>Il ne reste plus qu&#8217;a loader jQuery (avec la version voulue, c&#8217;est mieux) :</p>
<pre lang="javascript">google.load('jquery', '1.2.6');</pre>
<h3>Utiliser des ID le plus souvent possible</h3>
<p>Spécifier ses éléments dans le sélecteur en précisant leur ID est beaucoup plus rapide. L&#8217;explication est logique :</p>
<ul>
<li>Quand il peut, jQuery se base sur <a href="https://developer.mozilla.org/en/DOM/document.getElementById"><span style="font-family: arial; font-size: x-small;"><span class="titre_ref1"><strong>getElementById()</strong></span></span></a>, qui (<a href="http://www.javascriptjedi.com/getElementById/"><span style="text-decoration: line-through;">théoriquement</span></a>) est optimisé ;</li>
<li>En cas de parcours du DOM, il s&#8217;arrête, quoi qu&#8217;il arrive sur le premier élément trouvé, ID devant être unique.</li>
</ul>
<p>Un petit test sous firebug sur la home page du blog nous en dit long :</p>
<pre lang="javascript">console.time('Selector on id');
for (var i = 0; i < 10000; i++) {
	jQuery('#imonline');
}
console.timeEnd('Selector on id');

	 // Selector on id: 236ms

console.time('Selector on class');
for (var i = 0; i < 10000; i++) {
	jQuery('div.sidebarboxbottom');
}
console.timeEnd('Selector on class');
	// Selector on class: 5266ms</pre>
<h3>Contextualiser les sélecteurs</h3>
<p>Par défaut, lorsque l'on définit un sélecteur, typiquement <em>$('div.cssClass')</em>, jQuery va traverser <strong>TOUT</strong> le DOM à la recherche des éléments respectant ce sélecteur. Or, il arrive souvent que notre recherche ne soit pertinente qu'à un certain niveau du DOM, par exemple, à l'intérieur d'un <em>&lt;div&gt;</em> et l'on a souvent l'habitude (parce que la lisibilité est accrue et que c'est plus rapide à taper) de garder le parcours entier du DOM avec l'écritude $('div.cssClass').</p>
<p>Cependant, grâce au <a href="http://docs.jquery.com/How_jQuery_Works#Chainability_.28The_Magic_of_jQuery.29">concept d'enchaînement</a> de jQuery, on peut contextualiser un sélecteur dans un ou plusieurs éléments donnés. Cela permet non seulement d'éviter des erreurs lorsque la conception d'un page change et surtout d'optimiser le code, jQuery ayant moins d'éléments à traverser.</p>
<p>Exemple :</p>
<pre lang="javascript">/**
 * Ne recherche des input que dans des forms (évidemment)
 */
$('form').find('input');
/**
 * Écriture alternative, recherche les li qu'a l'intérieur d'un ul nommé
 */
$('ul#myList', $('li'));</pre>
<h3>Réduire au maximum les opérations de sélécteur (surtout celles qui sont inutiles)</h3>
<p>Le résultat d'un selecteur n'est pas forcément un donnée volatile à chainer, type <em>$('div#errorBox').hide().remove();</em> Cette écriture est certes très pratique mais nous perdons le résultat de <em>$('div#errorBox')</em>. Cette erreur de conception typique vient du nommage de la fonction $ qui, certes, rend le code beaucoup plus lisible, mais induit le codeur en erreur ; lui faisant penser que <em>$('div#errorBox')</em> est une variable et non un appel de fonction.</p>
<p>Un développeur doit toujours se demander lors de l'utilisation du sélecteur $ si ce resultat va être utilisé à nouveau après cette ligne ou pas.</p>
<p>Exemple :</p>
<pre lang="javascript">/**
 * jQuery va retraverser le DOM 100 fois à la recherche de ul#list
 */
for (var i = 0; i < 100; i++) {
	$('ul#list').append('
<li>Numéro ' + i + '</li>

');
}
/**
 * jQuery va retraverser le DOM une seule fois à la recherche de ul#list
 */
var	list = $('ul#list');
for (var i = 0; i < 100; i++) {
	list.append('
<li>Numéro ' + i + '</li>

');
}</pre>
<p>Inutile de dire que dans ce cas, le gain de ressource est énorme !</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.juliencrouzet.fr/84/optimiser-l-utilisation-de-jquery/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>SocialHistory &#8211; Le BigBrother des médias sociaux</title>
		<link>http://blog.juliencrouzet.fr/64/socialhistory-le-bigbrother-des-medias-sociaux/</link>
		<comments>http://blog.juliencrouzet.fr/64/socialhistory-le-bigbrother-des-medias-sociaux/#comments</comments>
		<pubDate>Mon, 15 Dec 2008 00:06:10 +0000</pubDate>
		<dc:creator>c2c</dc:creator>
				<category><![CDATA[javascript]]></category>
		<category><![CDATA[social]]></category>
		<category><![CDATA[Tech]]></category>
		<category><![CDATA[web2.0]]></category>

		<guid isPermaLink="false">http://blog.juliencrouzet.fr/?p=64</guid>
		<description><![CDATA[
Warning: call_user_func_array() expects parameter 1 to be a valid callback, first array member is not a valid class name or object in /home/www/blog.juliencrouzet.fr/wp-includes/plugin.php on line 166

Call Stack:
    0.0001     623456   1. {main}() /home/www/blog.juliencrouzet.fr/index.php:0
    0.0002     628984   2. require('/home/www/blog.juliencrouzet.fr/wp-blog-header.php') /home/www/blog.juliencrouzet.fr/index.php:17
    0.1982   37936632   3. require_once('/home/www/blog.juliencrouzet.fr/wp-includes/template-loader.php') /home/www/blog.juliencrouzet.fr/wp-blog-header.php:16
    0.1991   37939552   4. do_feed() /home/www/blog.juliencrouzet.fr/wp-includes/template-loader.php:14
    0.1991   37939832   5. do_action() /home/www/blog.juliencrouzet.fr/wp-includes/functions.php:1721
    0.1991   37941856   6. call_user_func_array() /home/www/blog.juliencrouzet.fr/wp-includes/plugin.php:395
    0.1991   37941912   7. do_feed_rss2() /home/www/blog.juliencrouzet.fr/wp-includes/plugin.php:0
    0.1991   37942104   8. load_template() /home/www/blog.juliencrouzet.fr/wp-includes/functions.php:1753
    0.1992   38004272   9. require_once('/home/www/blog.juliencrouzet.fr/wp-includes/feed-rss2.php') /home/www/blog.juliencrouzet.fr/wp-includes/theme.php:1087
    0.2472   38072464  10. the_excerpt_rss() /home/www/blog.juliencrouzet.fr/wp-includes/feed-rss2.php:46
    0.2486   38075064  11. apply_filters() /home/www/blog.juliencrouzet.fr/wp-includes/feed.php:177
    0.2488   38077464  12. call_user_func_array() /home/www/blog.juliencrouzet.fr/wp-includes/plugin.php:166

]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;">
<div id="attachment_68" class="wp-caption aligncenter" style="width: 163px"><img class="size-full wp-image-68" title="bigbrother2" src="http://blog.juliencrouzet.fr/wp-content/uploads/2008/12/bigbrother2.jpg" alt="http://www.nordenstar.com/archive/2007/08/17/wikipedia.html" width="153" height="161" /><p class="wp-caption-text">http://is.gd/bJOt</p></div>
<p style="text-align: left;"><a href="http://www.azarask.in/blog/post/socialhistoryjs/">SocialHistory.js</a> est un petit bout de Javascript totalement intrusif mais vraiment bien pensé !</p>
<p style="text-align: left;">Il permet de détecter quels sont les sites sociaux utilisés par l&#8217;internaute qui visite votre site. Ca peut permettre par exemple de n&#8217;afficher ques les icônes utiles (Digg This, Sumble Upon this site, etc.) à afficher, au lieu d&#8217;en afficher 50.</p>
<p style="text-align: left;"><span id="more-64"></span>Le fonctionnement est très bête mais vraiment efficace : il crée un iframe cachée dans votre page et y insère les liens vers des dizaines de sites. Après il ne reste qu&#8217;a utiliser une petite faille connue depuis des années. Les liens déjà visités sont mauves, les autres sont bleus.</p>
<p style="text-align: left;">On peut donc supposer qu&#8217;un site déja consulté est un site utilisé &#8230; simple, mais efficace !</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.juliencrouzet.fr/64/socialhistory-le-bigbrother-des-medias-sociaux/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>JSLint &#8211; Pourquoi je n&#039;ai jamais entendu parler de ça avant ?</title>
		<link>http://blog.juliencrouzet.fr/21/jslint-pourquoi-je-nai-jamais-entendu-parler-de-ca-avant/</link>
		<comments>http://blog.juliencrouzet.fr/21/jslint-pourquoi-je-nai-jamais-entendu-parler-de-ca-avant/#comments</comments>
		<pubDate>Mon, 08 Dec 2008 18:28:07 +0000</pubDate>
		<dc:creator>c2c</dc:creator>
				<category><![CDATA[code]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[Tech]]></category>
		<category><![CDATA[tools]]></category>

		<guid isPermaLink="false">http://blog.juliencrouzet.fr/?p=21</guid>
		<description><![CDATA[
Warning: call_user_func_array() expects parameter 1 to be a valid callback, first array member is not a valid class name or object in /home/www/blog.juliencrouzet.fr/wp-includes/plugin.php on line 166

Call Stack:
    0.0001     623456   1. {main}() /home/www/blog.juliencrouzet.fr/index.php:0
    0.0002     628984   2. require('/home/www/blog.juliencrouzet.fr/wp-blog-header.php') /home/www/blog.juliencrouzet.fr/index.php:17
    0.1982   37936632   3. require_once('/home/www/blog.juliencrouzet.fr/wp-includes/template-loader.php') /home/www/blog.juliencrouzet.fr/wp-blog-header.php:16
    0.1991   37939552   4. do_feed() /home/www/blog.juliencrouzet.fr/wp-includes/template-loader.php:14
    0.1991   37939832   5. do_action() /home/www/blog.juliencrouzet.fr/wp-includes/functions.php:1721
    0.1991   37941856   6. call_user_func_array() /home/www/blog.juliencrouzet.fr/wp-includes/plugin.php:395
    0.1991   37941912   7. do_feed_rss2() /home/www/blog.juliencrouzet.fr/wp-includes/plugin.php:0
    0.1991   37942104   8. load_template() /home/www/blog.juliencrouzet.fr/wp-includes/functions.php:1753
    0.1992   38004272   9. require_once('/home/www/blog.juliencrouzet.fr/wp-includes/feed-rss2.php') /home/www/blog.juliencrouzet.fr/wp-includes/theme.php:1087
    0.2531   38076368  10. the_excerpt_rss() /home/www/blog.juliencrouzet.fr/wp-includes/feed-rss2.php:46
    0.2550   38079016  11. apply_filters() /home/www/blog.juliencrouzet.fr/wp-includes/feed.php:177
    0.2553   38081440  12. call_user_func_array() /home/www/blog.juliencrouzet.fr/wp-includes/plugin.php:166

]]></description>
			<content:encoded><![CDATA[<div id="attachment_22" class="wp-caption aligncenter" style="width: 160px"><a href="http://blog.juliencrouzet.fr/wp-content/uploads/2008/12/jslint.gif" rel="lightbox[21]"><img class="size-thumbnail wp-image-22" title="jslint" src="http://blog.juliencrouzet.fr/wp-content/uploads/2008/12/jslint.gif" alt="JSLint, the Javascript Verifier" width="150" height="46" /></a><p class="wp-caption-text">JSLint, the Javascript Verifier</p></div>
<p>Quand je code, en général, je suis assez gadget-o-phile. Voire même excessivement, j&#8217;ai quelques fois eu tendance à passer plus de temps a maîtriser un outil de développement qu&#8217;a développer ! Maintenant, c&#8217;est vrai que utliser les bons outils au bon moment est souvent un des piliers d&#8217;un développement réussi et d&#8217;un planning respecté. Cependant, concernant Javascript, je me suis contenté, jusque là, de <a href="http://www.getfirebug.com">Firebug</a>.<span id="more-21"></span></p>
<p>Cependant, Firebug est un outil de debuggage, mais pas un vérifieur de syntaxe, et c&#8217;est là ou <a href="http://www.jslint.com/">JSLint</a> intervient. Le cas classique (en ce qui me concerne), c&#8217;est la virgule en trop dans la définition d&#8217;un object :</p>
<pre lang="Javascript">  var myOptions = {
    'propertyA' :      5,
    'propertyB' :      'string',
  };</pre>
<p>Cette virgule en trop, après &#8216;string&#8217; est un mauvais reflexe que j&#8217;ai acquis en codant en PHP, et est d&#8217;un point de vue syntaxe incorrect. Resultat, ce code vas marcher sous Firefox, mais pas sous IE, qui m&#8217;indiquera une erreur très précise comme &#8216;Syntax Error&#8217;.</p>
<p>Passer ce code dans <a href="http://www.jslint.com/">JSLint</a>, nous donne donc :</p>
<div id="attachment_25" class="wp-caption alignnone" style="width: 310px"><a href="http://blog.juliencrouzet.fr/wp-content/uploads/2008/12/image-2.png" rel="lightbox[21]"><img class="size-medium wp-image-25" title="JSLint Screenshot on error" src="http://blog.juliencrouzet.fr/wp-content/uploads/2008/12/image-2.png" alt="JSLint Screenshot on error" width="300" height="67" /></a><p class="wp-caption-text">JSLint Screenshot on error</p></div>
<p>Pratique, non ?</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.juliencrouzet.fr/21/jslint-pourquoi-je-nai-jamais-entendu-parler-de-ca-avant/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
