<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet title="XSL formatting" type="text/xsl" href="http://www.alti.info/feed/rss2/xslt" ?><rss version="2.0"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:wfw="http://wellformedweb.org/CommentAPI/"
  xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
  <title>Alt-I, des informations alternatives - Informatique, Cultures alternatives et Geekeries saupoudrées d'Ajax. - web</title>
  <link>http://www.alti.info/</link>
  <description>Alt-I, des informations alternatives. Podcast causant d'informatique généraliste et de cultures alternatives avec un soupçon de XHTML, CSS, AJAX, Javascript, et autres outils web…</description>
  <language>fr</language>
  <pubDate>Thu, 21 Aug 2008 20:11:21 +0200</pubDate>
  <copyright>Creative Commons By-NC-SA</copyright>
  <docs>http://blogs.law.harvard.edu/tech/rss</docs>
  <generator>Dotclear</generator>
  
    
  <item>
    <title>Acid test 3</title>
    <link>http://www.alti.info/post/2008/02/14/Acid-test-3</link>
    <guid isPermaLink="false">urn:md5:5ec81d010fb7877164a2fc8e374a0fd1</guid>
    <pubDate>Thu, 14 Feb 2008 10:51:00 +0100</pubDate>
    <dc:creator>Hadrien</dc:creator>
        <category>IE SUX</category>
        <category>Apple</category><category>Firefox</category><category>IE</category><category>Microsoft</category><category>Mozilla</category><category>standards</category><category>W3C</category><category>web</category><category>Webkit</category>    
    <description>    &lt;p&gt;On va encore se marrer. &lt;a href=&quot;http://acid3.acidtests.org/&quot; hreflang=&quot;en&quot;&gt;L'Acid test version 3&lt;/a&gt; a été testé sur tout les navigateurs du marché. Voici ce qui devrait s'afficher sur un navigateur respectant les standards à 100%&amp;nbsp;:&lt;/p&gt;


&lt;p&gt;&lt;img src=&quot;http://www.alti.info/images/Scrinchoutes/.Acid_test_3_reference_s.jpg&quot; alt=&quot;Acid test 3 reference&quot; style=&quot;display:block; margin:0 auto;&quot; /&gt;&lt;/p&gt;


&lt;p&gt;Malheureusement, on est loin du compte. Seule la dernière nightbuild de WebKit atteind un score respectable de 82%&amp;nbsp;:&lt;/p&gt;


&lt;p&gt;&lt;img src=&quot;http://www.alti.info/images/Scrinchoutes/.WebKit-r30191_s.jpg&quot; alt=&quot;Acid test 3 WebKit&quot; style=&quot;display:block; margin:0 auto;&quot; /&gt;&lt;/p&gt;


&lt;p&gt;Et marrons nous devant IE6 et IE7&amp;nbsp;:&lt;/p&gt;


&lt;p&gt;&lt;img src=&quot;http://www.alti.info/images/Scrinchoutes/.800px-Acid3_ie6_s.jpg&quot; alt=&quot;Acid test 3 IE6&quot; style=&quot;display:block; margin:0 auto;&quot; /&gt;&lt;img src=&quot;http://www.alti.info/images/Scrinchoutes/.800px-Acid3_ie7_s.jpg&quot; alt=&quot;Acid test 3 IE7&quot; style=&quot;display:block; margin:0 auto;&quot; /&gt;&lt;/p&gt;


&lt;p&gt;Voilà, avec 70% de navigateurs qui n'arrive même pas à 15% d'un test de standards, le web est mal barré…&lt;/p&gt;</description>
    
    
    
          <comments>http://www.alti.info/post/2008/02/14/Acid-test-3#comment-form</comments>
      <wfw:comment>http://www.alti.info/post/2008/02/14/Acid-test-3#comment-form</wfw:comment>
      <wfw:commentRss>http://www.alti.info/feed/rss2/comments/242</wfw:commentRss>
      </item>
    
  <item>
    <title>Un site web magnifique</title>
    <link>http://www.alti.info/post/2007/12/18/Un-site-web-magnifique</link>
    <guid isPermaLink="false">urn:md5:c233a628680eaa928a3acdc251ddb676</guid>
    <pubDate>Tue, 18 Dec 2007 10:31:00 +0100</pubDate>
    <dc:creator>Hadrien</dc:creator>
        <category>Général</category>
        <category>css</category><category>graphisme</category><category>web</category>    
    <description>    &lt;p&gt;Pour qui aime les css et le png&amp;nbsp;:&lt;/p&gt;


&lt;p&gt;&lt;a href=&quot;http://www.webleeddesign.com/&quot; hreflang=&quot;en&quot;&gt;http://www.webleeddesign.com/&lt;/a&gt;&lt;/p&gt;</description>
    
    
    
          <comments>http://www.alti.info/post/2007/12/18/Un-site-web-magnifique#comment-form</comments>
      <wfw:comment>http://www.alti.info/post/2007/12/18/Un-site-web-magnifique#comment-form</wfw:comment>
      <wfw:commentRss>http://www.alti.info/feed/rss2/comments/209</wfw:commentRss>
      </item>
    
  <item>
    <title>Ajax, navigation et accessibilité… Exemple pratique</title>
    <link>http://www.alti.info/post/2007/09/08/Ajax-navigation-et-accessibilite-Exemple-pratique</link>
    <guid isPermaLink="false">urn:md5:c8ef6605303625fed91ba0dfb5aa2d2b</guid>
    <pubDate>Sat, 08 Sep 2007 23:42:00 +0200</pubDate>
    <dc:creator>Hadrien</dc:creator>
        <category>Développement</category>
        <category>accessibilité</category><category>AJAX</category><category>astuce</category><category>bidouille</category><category>developpement</category><category>Internet</category><category>JavaScript</category><category>w3c</category><category>web</category><category>web2.0</category>    
    <description>    &lt;p&gt;J'ai codé à l'arrache un &lt;strong&gt;exemple pratique&lt;/strong&gt; pour illustrer mon &lt;a href=&quot;http://www.alti.info/post/2007/08/26/Ajax-navigation-et-accessibilite-onload-anchor-ancre-astuce-javascript&quot; hreflang=&quot;fr&quot;&gt;astuce concernant la navigation en Ajax accessible&lt;/a&gt;. Bon, c'est pas encore top au point, mais ça fonctionne nickel sous Firefox. Sous Safari 2, l'historique n'est pas modifié donc, pas de précédent ou suivant. Seul le rechargement de page fonctionne. Opera 9.5, seul le bouton Suivant ne fonctionne étrangement pas. Et IE, j'ai pas testé&amp;nbsp;: j'ai pas envie de lancer VMWare&amp;nbsp;: j'attends vos retours en commentaires.&lt;/p&gt;


&lt;p&gt;Donc, de quoi s'agit il&amp;nbsp;? Nous avons une liste paginée. Sont affichés la liste des articles de ce blog par lot de 10 éléments. Une pagination en dessous permet d'afficher les 10 éléments suivants grâce à Ajax. Vous constaterez que lors d'un clic sur un numéro de page, une ancre s'ajoute à l'url. Mais aucun rechargement de page ne s'effectue.&lt;/p&gt;


&lt;p&gt;Faîtes donc le test suivant&amp;nbsp;: naviguez de page en page, puis rechargez la page. Vous vous retrouverez à la même pagination où vous étiez \o/ Attention, ce n'est pas fini. Cliquez sur le bouton précédent de votre navigateur… Pas de rechargement ni de changement de page, mais vous voilà quand même à la pagination précédente, toujours en ajax :o Revenez donc en arrière deux ou trois fois, puis repartez en avant. Même principe. Tout se charge par Ajax.&lt;/p&gt;


&lt;p&gt;Voilà &lt;strong&gt;une application Ajax totalement accessible&lt;/strong&gt; et qui reste utilisable comme tout site traditionnel.&lt;/p&gt;


&lt;p&gt;Ah oui, ça se passe ici&amp;nbsp;:&lt;/p&gt;


&lt;p&gt;&lt;a href=&quot;http://hadrien.eu/Works/AccessibiliteAjax/&quot; hreflang=&quot;fr&quot;&gt;Exemple pratique pour rendre Ajax accessible&lt;/a&gt;&lt;/p&gt;


&lt;p&gt;La prochaine étape sera d'écrire un module pour YUI afin de faciliter l'implémentation de cette méthode.&lt;/p&gt;</description>
    
    
    
          <comments>http://www.alti.info/post/2007/09/08/Ajax-navigation-et-accessibilite-Exemple-pratique#comment-form</comments>
      <wfw:comment>http://www.alti.info/post/2007/09/08/Ajax-navigation-et-accessibilite-Exemple-pratique#comment-form</wfw:comment>
      <wfw:commentRss>http://www.alti.info/feed/rss2/comments/166</wfw:commentRss>
      </item>
    
  <item>
    <title>Héritage de classes Javascript</title>
    <link>http://www.alti.info/post/2007/07/15/Heritage-de-classes-javascript</link>
    <guid isPermaLink="false">urn:md5:4f4bf4bf56bacfd5ae62cc0d5b2d6458</guid>
    <pubDate>Sun, 15 Jul 2007 14:38:00 +0200</pubDate>
    <dc:creator>Hadrien</dc:creator>
        <category>Développement</category>
        <category>AJAX</category><category>developpement</category><category>geek</category><category>JavaScript</category><category>POO</category><category>programmation</category><category>web</category><category>web2.0</category>    
    <description>    &lt;p&gt;
	Il est possible aussi de faire hériter une classe d'une autre. Voici comment j'écris monAutreClasse héritée de maClasse :
&lt;/p&gt;
&lt;pre class=&quot;js&quot; id=&quot;heritjs&quot;&gt;
/**
 * monAutreClasse
 * @extends maClasse
 * @constructor
 */
monProjet.monAutreClasse = function(arg) {
	// Ces deux lignes permettent de récupérer le constructeur de la classe parente
	this.superclass = monProjet.maClasse;
	this.superclass(arg);
	
	// On peut ensuite ajouter de nouvelles variables :
	this.autreVar = &quot;autre chose&quot;;
	// A noter que si on veut qu'elles soient disponible dans le init, il faut les placer avant
	// le this.superclass
};
// Ici, on clone le prototype (les méthodes) de la classe parente à la classe enfant
monProjet.monAutreClasse.prototype = new superclass();

// Méthodes publiques
/**
 * Une nouvelle méthode disponible seulement dans monAutreClasse
 */
monProjet.monAutreClasse.prototype.displayAutreVar = function() {
	alert(this.autreVar);
};
/**
 * On redéfinie la méthode toString()
 */
monProjet.monAutreClasse.prototype.toString = function() {
	return &quot;monAutreClasse object&quot;;
};


// On peut ensuite apeller les même méthodes que la classe parente
var unSecondObjet = new monProjet.monAutreClasse(&quot;kikoo&quot;);
monProjet.maClasse.getByVar1(&quot;kikoo&quot;); // retourne l'objet &quot;unObjet&quot;
monProjet.maClasse.getByVar1(&quot;kikoo&quot;).autreMethode(); // Crée une alerte
// mais aussi celles propres à elle même :
unSecondObjet.displayAutreVar();
// Et les méthodes redéfinies :
unSecondObjet.toString(); // retourne &quot;monAutreClasse Object&quot;
&lt;/pre&gt;
&lt;p&gt;
	Alors ce qui est embêtant, c'est qu'on ne peut pas définir de nouvelles méthodes de prototype directement comme dans l'écriture d'une classe simple. Si j'écrivais monProjet.monAutreClasse.prototype = {…}, toute les méthodes de la classe parente seraient écrasées. Je suis obligé de les nommer les unes après les autres.
&lt;/p&gt;
&lt;p&gt;
	À noter aussi que le tableau contenant tout les objets créé n'est pas necessaire. Par contre, on aurait pu avoir un tableau séparé pour cette classe enfante mais il aurait fallu modifier le construteur.
&lt;/p&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;http://www.alti.info/js/dp.SyntaxHighlighter/Scripts/shCore.js&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;http://www.alti.info/js/dp.SyntaxHighlighter/Scripts/shBrushJScript.js&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot;&gt;
//&lt;![CDATA[
	document.getElementById('heritjs').setAttribute('name', 'code');
	dp.SyntaxHighlighter.ClipboardSwf = '/js/dp.SyntaxHighlighter/Scripts/clipboard.swf';
	dp.SyntaxHighlighter.HighlightAll('code');
	document.getElementById('heritjs').parentNode.removeChild(document.getElementById('heritjs'));
//]]&gt;
&lt;/script&gt;</description>
    
    
    
          <comments>http://www.alti.info/post/2007/07/15/Heritage-de-classes-javascript#comment-form</comments>
      <wfw:comment>http://www.alti.info/post/2007/07/15/Heritage-de-classes-javascript#comment-form</wfw:comment>
      <wfw:commentRss>http://www.alti.info/feed/rss2/comments/137</wfw:commentRss>
      </item>
    
  <item>
    <title>Coder proprement ses classes Javascript</title>
    <link>http://www.alti.info/post/2007/07/15/Coder-proprement-ses-classes-Javascript</link>
    <guid isPermaLink="false">urn:md5:69586f489b7c0243e6e2dec310294556</guid>
    <pubDate>Sun, 15 Jul 2007 01:30:00 +0200</pubDate>
    <dc:creator>Hadrien</dc:creator>
        <category>Développement</category>
        <category>AJAX</category><category>developpement</category><category>geek</category><category>JavaScript</category><category>POO</category><category>programmation</category><category>web</category><category>web2.0</category>    
    <description>    &lt;p&gt;
Il existe de nombreuses façons de coder en Javascript. La plus fréquente est malheureusement la plus crade : lister ses fonctions les une après les autres…&lt;br /&gt;
Voici comment je code mes classes JS. Il existe peut être de meilleures méthodes mais je trouve celle-ci très propre et très lisible :
&lt;/p&gt;
&lt;pre class=&quot;jscript&quot; id=&quot;classjs&quot;&gt;var monProjet = {}; // On crée une variable globale du nom du projet
// Ce tableau permettra de stocker et récupérer facilement les objets créés.
//Je lui donne le nom de la classe avec un 's' marquant le pluriel :
monProjet.maClasses = new Array();
/**
 * Classe maClasse : fait des choses.
 */
monProjet.maClasse = function(attr)
{
	// Variable
	this.variable1 = attr;
	
	monProjet.maClasses.push(this);
	this.init();
};
// Méthodes publiques de maClasse
monProjet.maClasse.prototype =
{
	/**
	 * Initialisation, méthode apellée à l'instanciation de l'objet
	 */
	init: function()
	{
		this.variable2 = this.variable1 + 10;
	},
	/**
	 * Autre méthode qui va afficher variable2 dans une alerte
	 */
	autreMethode: function()
	{
		alert(this.variable2);
	},
	/**
	 * Retourne une valeur de l'objet sous forme de chaine
	 */
	toString: function()
	{
		return &quot;maClasse Object&quot;;
	}
};
// Méthodes Statiques
/**
 * Une methode statique qui retourne 'yo'
 */
monProjet.maClasse.uneMethodeStatique = function()
{
	return &quot;yo&quot;;
};
/**
 * Le genre de méthode statique où on se rends compte de l'utilité du tableau d'objets vu plus haut
 */
monProjet.maClasse.getByVar1 = function(var1)
{
	for (var i = 0; monProjet.maClasses[i]; i++)
	{
		if (monProjet.maClasses[i].variable1 == var1)
		{
			return monProjet.maClasses[i];
		}
	}
	return false;
};

//On peut ensuite créer un objet maClasse et apeller ses méthodes publiques et statiques :

var unObjet = new monProjet.maClasse(&quot;youpi&quot;);
unObjet.toString(); // retourne &quot;maClasse Object&quot;
monProjet.maClasse.getByVar1(&quot;youpi&quot;); // retourne l'objet &quot;unObjet&quot;
monProjet.maClasse.getByVar1(&quot;youpi&quot;).autreMethode(); // Crée une alerte
…
&lt;/pre&gt;
&lt;p&gt;
Nous avons ainsi des classes bien structurées et aucune variable globales (à part la première bien sur) qui pourrait se retrouver écraser par d'autres scripts.
&lt;/p&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;http://www.alti.info/js/dp.SyntaxHighlighter/Scripts/shCore.js&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;http://www.alti.info/js/dp.SyntaxHighlighter/Scripts/shBrushJScript.js&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot;&gt;
//&lt;![CDATA[
	document.getElementById('classjs').setAttribute('name', 'code');
	dp.SyntaxHighlighter.ClipboardSwf = '/js/dp.SyntaxHighlighter/Scripts/clipboard.swf';
	dp.SyntaxHighlighter.HighlightAll('code');
	document.getElementById('classjs').parentNode.removeChild(document.getElementById('classjs'));
//]]&gt;
&lt;/script&gt;</description>
    
    
    
          <comments>http://www.alti.info/post/2007/07/15/Coder-proprement-ses-classes-Javascript#comment-form</comments>
      <wfw:comment>http://www.alti.info/post/2007/07/15/Coder-proprement-ses-classes-Javascript#comment-form</wfw:comment>
      <wfw:commentRss>http://www.alti.info/feed/rss2/comments/136</wfw:commentRss>
      </item>
    
</channel>
</rss>