<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet title="XSL formatting" type="text/xsl" href="http://jeremie.patonnier.net/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/"
  xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
  <title>Chez Jérémie - Mot-clé - javascript</title>
  <link>http://jeremie.patonnier.net/</link>
  <atom:link href="http://jeremie.patonnier.net/feed/tag/javascript/rss2" rel="self" type="application/rss+xml"/>
  <description>Chez Jérémie, parfois c'est sérieux, parfois non !</description>
  <language>fr</language>
  <pubDate>Tue, 04 Jul 2017 19:32:17 +0200</pubDate>
  <copyright>Creative Commons BY-NC-SA 2.0 Fr</copyright>
  <docs>http://blogs.law.harvard.edu/tech/rss</docs>
  <generator>Dotclear</generator>

  
  <item>
    <title>Lier CSS à Javascript : une mauvaise idée</title>
    <link>http://jeremie.patonnier.net/post/2012/02/13/Lier-CSS-a-Javascript-une-mauvaise-idee</link>
    <guid isPermaLink="false">urn:md5:bd702df765735f2c2f802713e3b5baa5</guid>
    <pubDate>Mon, 13 Feb 2012 09:30:00 +0100</pubDate>
    <dc:creator>Jeremie</dc:creator>
        <category>Web</category>
        <category>CSS</category><category>HTML</category><category>javascript</category>
    <description>&lt;p&gt;J&amp;#8217;ai récemment &lt;a href=&quot;https://twitter.com/#%21/JeremiePat/status/168436209142595584&quot;&gt;lancé un twitt&lt;/a&gt; qui a généré un nombre important et plutôt surprenant de réactions. Vous n&amp;#8217;êtes pas sans savoir qu&amp;#8217;actuellement, l’utilisation des préfixes vendeur en CSS est une source de grande tension. Parmi toutes les solutions qui existent pour essayer de limiter l&amp;#8217;impact de l&amp;#8217;usage de ces préfixes, le script &lt;a hreflang=&quot;en&quot; href=&quot;http://leaverou.github.com/prefixfree/&quot;&gt;-prefix-free&lt;/a&gt; de Lea Verou est une solution actuellement très en vogue&amp;#8230; mais dont je déconseille très fortement l&amp;#8217;usage.&lt;/p&gt;    &lt;p&gt;Soyons clair, je n&amp;#8217;ai pas l&amp;#8217;intention d&amp;#8217;alimenter le débat sur l&amp;#8217;opportunité ou non d&amp;#8217;utiliser les préfixes vendeur. Si vous les utilisez, utilisez les bien, utilisez toutes les variantes de tous les vendeurs. C&amp;#8217;est tout.&lt;/p&gt;
&lt;p&gt;Non, mon sujet ici, ce sont tous ces scripts Javascript qui vont conditionner l&amp;#8217;usage de CSS lorsqu&amp;#8217;ils sont utilisés dans un navigateur Web. -prefix-free bien sûr, mais également &lt;a hreflang=&quot;en&quot; href=&quot;http://lesscss.org/&quot;&gt;less.js&lt;/a&gt;, &lt;a hreflang=&quot;en&quot; href=&quot;https://github.com/scottjehl/Respond&quot;&gt;respond.js&lt;/a&gt;, &lt;a hreflang=&quot;en&quot; href=&quot;http://imsky.github.com/cssFx/&quot;&gt;cssFX&lt;/a&gt;, &lt;a hreflang=&quot;en&quot; href=&quot;https://github.com/pyrsmk/mediatizr&quot;&gt;mediatizr&lt;/a&gt;, &lt;a hreflang=&quot;en&quot; href=&quot;https://developers.google.com/webfonts/docs/webfont_loader&quot;&gt;WebFont loader&lt;/a&gt;, etc. Je n&amp;#8217;ai pas ici la prétention de vous convaincre de ne pas les utiliser. D&amp;#8217;une part parce que vous faites bien ce que vous voulez (c&amp;#8217;est aussi ça le Web) et d&amp;#8217;autre part parce qu&amp;#8217;il m&amp;#8217;arrive même à moi de m&amp;#8217;en servir et ce serait quand même assez gonflé de ma part de vous dire «&amp;#160;faites ce que je dit, pas ce que je fait&amp;#160;» &lt;img src=&quot;/themes/default/smilies/wink.png&quot; alt=&quot;;)&quot; class=&quot;smiley&quot; /&gt;&lt;/p&gt;
&lt;p&gt;L&amp;#8217;idée, c&amp;#8217;est plutôt de vous détailler les risques auxquels vous vous exposez pour que vous puissiez ensuite faire votre choix en votre âme et conscience.&lt;/p&gt;
&lt;h2&gt;Performance&lt;/h2&gt;
&lt;p&gt;L&amp;#8217;usage de ces scripts induit un certain nombre de biais dans les performances de vos sites. Souvent, les scripts comme -prefix-free sont appréciés car «&amp;#160;ils permettent de réduire le poids des CSS&amp;#160;». Ce qui est vrai mais au prix du poids du script lui-même (le jeu en vaut-il la chandelle) et de requêtes HTTP supplémentaires (vous êtes sûr de n&amp;#8217;avoir aucun problème de latence&amp;#160;?). &lt;/p&gt;
&lt;p&gt;Au delà de ces points largement discutables il y a tout de même quelques autres éléments à considérer&amp;#160;:&lt;/p&gt;
&lt;ol&gt;&lt;li&gt;Le rendu complet de votre site est suspendu au chargement de vos scripts. Le temps de rendu peut donc être altéré si vous êtes sur des connexions de mauvaise qualité comme du EDGE en réseau mobile. Cela peut se constater de manière bénigne avec la présence d&amp;#8217;un léger &lt;a hreflang=&quot;en&quot; href=&quot;http://bluerobot.com/web/css/fouc.asp/&quot;&gt;FOUC&lt;/a&gt; ou bien plus gravement en cas de problème de chargement du script ce qui peut complètement casser votre design.&lt;/li&gt;
&lt;li&gt;Le rendu devient également dépendant des performances globales d’exécution de vos scripts. Avec un seul petit script qui va agir sur une petite feuille de style, vous ne verrez jamais de problème. Mais que va-t-il se passer avec plusieurs centaines de Ko de scripts et de feuilles de style&amp;#160;? Par exemple, un script comme -prefix-free est un script linéaire&amp;#160;: plus la feuille de style sera grosse, plus il prendra de temps pour s’exécuter car il l&amp;#8217;examine entièrement. Que se passera-t-il alors si ce script est ralenti ou gêné ou traité après tous les autres scripts de la page (ce qui inclut vos scripts, mais également ceux que vous ne connaissez pas et qui sont utilisés par les extensions ou les bookmarklets de l&amp;#8217;utilisateur)&amp;#160;?&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Bref, utiliser ce genre de script vous fait consommer des ressources que vous pourriez utiliser pour des choses plus importantes que du style avec tout les effets de bords potentiels que je viens de vous énumérer.&lt;/p&gt;
&lt;h2&gt;Maintenabilité&lt;/h2&gt;
&lt;p&gt;Un des principaux avantages mis en avant pour ces scripts, c&amp;#8217;est la simplification de la maintenance. Raphael Goetter l&amp;#8217;a d’ailleurs bien &lt;a hreflang=&quot;fr&quot; href=&quot;http://blog.goetter.fr/post/17482780022/prefix-free-pour-ou-contre&quot;&gt;expliqué sur son blogue&lt;/a&gt;. Là, je crois qu&amp;#8217;il faut s&amp;#8217;y arrêter quelques minutes.&lt;/p&gt;
&lt;p&gt;Chaque script apporte son lot d&amp;#8217;avantages, mais il apporte également son lot de problèmes. Aucun script n&amp;#8217;étant parfait du premier coup, vous allez également devoir assurer sa maintenance. Il vous faudra le mettre à jour en fonction de ses propres évolutions ou prendre le risque de vous retrouver coincé avec un outil qui ne vous rendra plus les services que vous attendiez.&lt;/p&gt;
&lt;p&gt;Il faut prendre en considération que ces scripts sont intimement liés à vos feuilles de style car plus vous les voudrez génériques plus ils seront volumineux et potentiellement bugués. Concrètement, cela veut dire qu&amp;#8217;à chaque fois que vous allez mettre vos feuilles de style à jour, vous allez devoir vous assurer que le script fait bien son travail. Cela signifie plus de tests et en cas d&amp;#8217;erreur, plus de temps pour débuguer car vous aurez alors deux sources d&amp;#8217;erreurs potentielles.&lt;/p&gt;
&lt;p&gt;C&amp;#8217;est particulièrement vrai avec un script du type de -prefix-free. Pour vous épargner de saisir quelques lignes de CSS en plus, vous vous rajoutez un risque projet non-négligeable. Tant que ça marchera, oui, vous gagnerez du temps. Par contre, à la seconde ou vous allez rencontrer un problème, vous allez perdre beaucoup de temps. Sera-ce plus ou moins que le temps gagné&amp;#160;? Difficile à dire car cela dépendra énormément de votre connaissance des technologies en jeu ainsi que des outils que vous utilisez. Mais encore une fois, pourquoi prendre un risque là ou vous n&amp;#8217;en aviez pas avant&amp;#160;?&lt;/p&gt;
&lt;h2&gt;Et l&amp;#8217;utilisateur dans tout ça&amp;#160;?&lt;/h2&gt;
&lt;p&gt;Alors malgré tout ça, faut-il vraiment renoncer à utiliser tous ces scripts pourtant bien pratiques&amp;#160;? Il n&amp;#8217;y a pas de réponse simple à ça. Pour être franc, il n&amp;#8217;y a jamais de réponse simple en matière d&amp;#8217;utilisation des technologies Web. Les contextes projets sont tous différents et certains justifient pleinement l&amp;#8217;usage de ces scripts.&lt;/p&gt;
&lt;p&gt;Néanmoins, avant de les utiliser, je vous invite à vous poser les questions suivantes&amp;#160;:&lt;/p&gt;
&lt;ol&gt;&lt;li&gt;&lt;strong&gt;Le script que je vais utiliser me permet-il de compenser un manque de compétences (techniques ou organisationnelles) de l&amp;#8217;équipe projet&amp;#160;?&lt;/strong&gt;&lt;br /&gt;Dans l&amp;#8217;affirmative, cela reviens à essayer de mettre un pansement sur une plaie ouverte. Si la plaie est petite, cela permettra de patienter le temps que l&amp;#8217;équipe se forme aux techniques requises. Si la plaie est profonde, ça ne fera que retarder le moment où il faudra prendre des mesures drastiques (et donc coûteuses) pour éviter l&amp;#8217;infection.&lt;br /&gt;Préférez un bon plan de formation à moyen terme et à court terme, prévoyez l&amp;#8217;intervention d&amp;#8217;un développeur sénior capable d’épauler l&amp;#8217;équipe. Si vous travaillez seul, faites l&amp;#8217;effort de vous former ou changez de métier.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Le script que je vais utiliser est-il là uniquement pour mon propre confort&amp;#160;?&lt;/strong&gt;&lt;br /&gt;Si c&amp;#8217;est le cas, sachez que j&amp;#8217;ai alors assez peu de considération pour vous (je sais, ça vous fait un belle jambe, mais au moins c&amp;#8217;est dit). Ce genre d&amp;#8217;attitude égoïste est exactement ce qui fait que le Web ouvert, standard et interopérable s&amp;#8217;étiole. Si vous pouvez faire la même chose sans utiliser de script, faites le. Vous rendrez service à tout le monde en commençant par vous-même &lt;img src=&quot;/themes/default/smilies/wink.png&quot; alt=&quot;;)&quot; class=&quot;smiley&quot; /&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Le script que je vais utiliser me permet-il d&amp;#8217;améliorer l’expérience utilisateur&amp;#160;?&lt;/strong&gt;&lt;br /&gt;Là, effectivement on peut sans doute se permettre de l&amp;#8217;utiliser. L&amp;#8217;utilisateur devrait toujours être votre point de référence. Quand vous réalisez un site Web, il y aura toujours au final un utilisateur qui va s&amp;#8217;en servir. C&amp;#8217;est compliqué de se dire qu&amp;#8217;on travaille pour un utilisateur. En effet, trop souvent, les promoteurs et acteurs d&amp;#8217;un projet se concentrent sur leur propres préoccupations. Les developpeurs et la pureté technique, les responsables métier et leur ROI, les chefs de projet et leur suivi budgétaire, Les designers et leur égo démesuré&amp;#8230; autant d’écueils qu&amp;#8217;on a tous un jour rencontrés. L&amp;#8217;utilisateur, c&amp;#8217;est un peu la petite lumière dans la nuit&amp;#8230; ne le perdez jamais de vue, c&amp;#8217;est votre bouée de sauvetage.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Alors voilà, malgré toute ma bonne volonté et même si je trouve que -prefix-free ou cssFX sont de très beaux projets, les utiliser revient, pour moi, à répondre «&amp;#160;oui&amp;#160;» à ma deuxième question. Vous comprendrez donc qu&amp;#8217;en ce qui me concerne, je ne peux pas cautionner son usage sur un site en production. Je peux comprendre qu&amp;#8217;on n&amp;#8217;ait pas envie de passer des heures à maintenir des listes sans fin de propriétés préfixées. Mais dans ce cas, faites plutôt le choix des préprocesseurs CSS (LESS, SASS, etc.) qui vous permettront de manipuler des feuilles de style plus simples tout en vous assurant qu&amp;#8217;elles comporteront bien tous les préfixes qui vont bien au moment de leur publication.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;PS&amp;#160;: Merci à Julien et Richard pour la relecture de mon orthographe déficiente &lt;img src=&quot;/themes/default/smilies/smile.png&quot; alt=&quot;:)&quot; class=&quot;smiley&quot; /&gt;&lt;/em&gt;&lt;/p&gt;</description>

    

      </item>
  
  <item>
    <title>Rendre une application AJAX bookmarquable</title>
    <link>http://jeremie.patonnier.net/post/2009/10/20/Rendre-une-application-AJAX-bookmarquable</link>
    <guid isPermaLink="false">urn:md5:d79f1d8b9578ce502889abce91dba848</guid>
    <pubDate>Thu, 22 Oct 2009 11:39:00 +0200</pubDate>
    <dc:creator>Jeremie</dc:creator>
        <category>Web</category>
        <category>AJAX</category><category>javascript</category>
    <description>&lt;p&gt;Parmi les reproches communément adressés aux applications AJAX on retrouve un grief assez récurrent : l'impossibilité d'utiliser les favoris. Dans cet article, je vais vous expliquer comment gérer les favoris (en anglais &quot;bookmarks&quot; d'où l'horrible néologisme du titre) avec une application utilisant AJAX. C'est beaucoup plus simple qu'il n'y paraît. &lt;/p&gt;    &lt;h2&gt;Beaucoup d'architecture&lt;/h2&gt;
&lt;p&gt;Avant même de penser à coder, il va falloir commencer par se poser un certain nombre de questions de nature architecturales. En effet, l'utilisation d'AJAX &quot;pervertit&quot; l'usage normal que l'on peut avoir d'un navigateur. Traditionnellement, un navigateur charge des documents (on parle aussi de ressources) identifiés par leur URL via le protocole HTTP le plus souvent. Le navigateur permet de passer d'un document à l'autre (via des liens hypertexte) ou éventuellement de modifier le document (via des formulaires) et d'en charger l'intégralité de la version modifiée. AJAX distord ce fonctionnement. Avec cette technique, le navigateur charge un seul document et va en modifier certaines parties en fonction des actions de l'utilisateur.&lt;/p&gt;
&lt;p&gt;Entre ces deux approches, les mécanismes techniques mis en œuvre sont fondamentalement les mêmes, mais c'est leur mise à disposition à destination de l'utilisateur qui diffère. D'un côté, l'utilisateur accède à N documents et de l'autre, il accède à un seul document qui se modifie en permanence. C'est sur ce dernier point que réside la difficulté liée aux favoris&amp;nbsp;: ce que l'on met en favoris, c'est l'URL d'une ressource !&lt;/p&gt;
&lt;h3&gt;La notion de contexte&lt;/h3&gt;
&lt;p&gt;HTTP se caractérise par une absence de contexte. C'est cette spécificité qui permet de mettre en favori n'importe quelle URL. En effet, sur cette base, une URL pointera en théorie toujours sur le document que l'on a vu. Le problème si vous mettez en favori une application AJAX, c'est que vous ne mettrez en favori que l'état initial du document, et pas l'état dans lequel se trouve votre document au moment où vous enregistrez votre favori.&lt;/p&gt;
&lt;p&gt;Donc, comme on le voit, AJAX créée un document avec un contexte&amp;nbsp;: l'état dans lequel il est à un instant T. Et ça, les navigateurs web ne savent pas le gérer nativement.&lt;/p&gt;
&lt;p&gt;Une application AJAX a donc deux problèmes à résoudre&amp;nbsp;:&lt;/p&gt;
&lt;ol&gt;&lt;li&gt;L'application doit disposer d'un mécanisme permettant de définir le contexte courant du document et l'exploiter le cas échéant.&lt;/li&gt;
&lt;li&gt;Les navigateurs ne savent mettre en favoris que des URLs&lt;/li&gt;
&lt;/ol&gt;
Cela signifie donc que pour rendre un application AJAX bookmarquable, le contexte du document doit être stocké dans l'URL. Or, comment modifier une URL sans recharger le document (ce qui ferait perdre tout le bénéfice d'AJAX) ?&lt;br /&gt;
&lt;h3&gt;La structure d'une URL&lt;/h3&gt;
&lt;p&gt;La structure des URLs va nous aider à voir où l'on peut stocker des paramètres de contexte. De manière simplifiée, une URL est structurée comme suit&amp;nbsp;:&lt;/p&gt;
&lt;ol&gt;&lt;li&gt;Le protocole&amp;nbsp;: En général HTTP dès que l'on est dans un cadre Web.&lt;/li&gt;
&lt;li&gt;Le domaine&amp;nbsp;: Il est de la forme &lt;code&gt;sous-domaine.domaine.extension&lt;/code&gt;. Il permet d'identifier la machine à qui on va demander le document qui nous intéresse.&lt;/li&gt;
&lt;li&gt;L'emplacement du document&amp;nbsp;: Il est de la forme &lt;code&gt;/dossier/sous-dossier/fichier&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Les paramètre de requête&amp;nbsp;: Ils sont de la forme &lt;code&gt;?paramètre1=valeur1&amp;amp;paramètreN=valeurN&lt;/code&gt;. Ces paramètres peuvent influer sur la nature profonde d'un document ou sur son contenu.&lt;/li&gt;
&lt;li&gt;Une éventuelle ancre nommée&amp;nbsp;: Elle est de la forme &lt;code&gt;#mon-ancre&lt;/code&gt;. Elle a pour vocation de cibler un élément identifié dans le document et, le cas échéant de positionner cette partie du document dans la zone visible de la fenêtre du navigateur.&lt;/li&gt;
&lt;/ol&gt;
Assez instinctivement, on serait tenté de positionner nos informations de contexte en tant que paramètre de requête. Effectivement, si on met en favori une URL avec des paramètres permettant de connaitre le contexte, on aura bien l'effet attendu. Malheureusement, si vous modifiez les paramètres de requête de l'URL, un navigateur va envoyer une requête HTTP et recharger la page, ce qui va à l'encontre de ce que l'on veut puisqu'on est en AJAX.&lt;br /&gt;
&lt;h3&gt;La gestion des URL par les navigateurs&lt;/h3&gt;
&lt;p&gt;De manière générale, toute modification de l'URL du navigateur conduit le navigateur à lancer une requête HTTP afin d'obtenir la dernière version du document correspondant. C'est aussi vrai pour les paramètres de requête. Après tout, si on modifie les paramètres, il faut bien que celle-ci soit relancée afin que le serveur puisse fournir le document correspondant.&lt;/p&gt;
&lt;p&gt;Il y a néanmoins une exception à cette règle&amp;nbsp;: la modification de l'ancre nommée.En effet, pour le navigateur, l'ancre nommée représente un élément présent dans le document courant et qu'il faut atteindre. En conséquence, on ne change pas de ressource (contrairement à une modification des paramètres de requête), mais on cherche à atteindre un point de la ressource courante il n'est donc pas nécessaire de lancer une nouvelle requête HTTP, au contraire, ce serait contre productif.&lt;/p&gt;
&lt;p&gt;Alléluia, c'est donc là que se situe le salut du développeur d'application AJAX&amp;nbsp;: utiliser l'ancre nommée pour stocker le contexte de son application dans l'URL.&lt;/p&gt;
&lt;h3&gt;Oui mais...&lt;/h3&gt;
&lt;p&gt;Il y a contexte et contexte. On pourrait philosopher pendant des heures et des heures sur ce détournement des ancres nommées dans un contexte AJAX. D'un point de vue extrêmement prosaïque, c'est la seule solution qui marche si on veut pouvoir utiliser les favoris du navigateur. Par contre, ce n'est pas parce que ça marche qu'il faut faire tout et n'importe quoi. Placer l'intégralité d'un contexte applicatif à cet endroit n'est pas pertinent et potentiellement dangereux pour votre application&amp;nbsp;: un utilisateur peut modifier cet élément de lui-même, on ne peut donc pas lui faire confiance. Ainsi, si vous placez un ensemble de variables en clair à cet endroit, vous vous exposez à des risques d'attaque de votre application. Il existe des tas de façons de stocker les données du contexte applicatif, que ce soit localement (les mécanismes &quot;Session Storage&quot; ou &quot;Local Storage&quot; de HTML 5 ou leur succédané des divers frameworks Javascript) ou sur un serveur distant (beaucoup plus sûr architecturalement parlant, mais plus problématique pour gérer la notion de &quot;offline&quot;). N'utilisez les ancres nommées que pour stocker un identifiant du contexte applicatif. Vous en retirerez des avantages pour vous et pour vos utilisateurs&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;Pour vous&amp;nbsp;: vous pouvez renforcer facilement la sécurité de vos applications tout en pouvant enrichir votre contexte applicatif sans changer vos mécanismes de gestion des URL.&lt;/li&gt;
&lt;li&gt;Pour votre utilisateur&amp;nbsp;: son URL reste lisible (voire compréhensible si vous gérez bien vos identifiants de contexte) et relativement légère sans exposer ses données.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Un peu de code&lt;/h2&gt;
&lt;p&gt;Maintenant que nous avons vu les bases théoriques, comment mettre ça concrètement en œuvre ?&lt;/p&gt;
&lt;h3&gt;window.location est mon ami&lt;/h3&gt;
&lt;p&gt;Vous faites de l'AJAX, donc vous faites du Javascript, et si vous faites du Javascript, vous avez accès à l'objet &lt;a hreflang=&quot;fr&quot; href=&quot;http://www.toutjavascript.com/reference/reference.php?iref=81&quot;&gt;&lt;code&gt;window.location&lt;/code&gt;&lt;/a&gt;. Cet objet vous donne accès à l'URL courante du navigateur et vous permet de la modifier.&lt;/p&gt;
&lt;p&gt;Lire l'URL courante&amp;nbsp;: &lt;code&gt;var URL = window.location.href&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Lire l'ancre nommée (elle commencera par le caractère &lt;code&gt;#&lt;/code&gt;)&amp;nbsp;: &lt;code&gt;var ANCRE = window.location.hash&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Modifier l'ancre nommé&amp;nbsp;:&lt;/p&gt;
&lt;pre class=&quot;sh_javascript&quot;&gt;/* Récupération du contexte actuel */&lt;br /&gt;var AncreOLD = window.location.hash;&lt;br /&gt;&lt;br /&gt;/* Récupération de l'URL courante */&lt;br /&gt;var URL = window.location.href;&lt;br /&gt;&lt;br /&gt;/* On supprime l'ancienne ancre de l'URL */&lt;br /&gt;URL = URL.substring(0, URL.length - AncreOLD.length);&lt;br /&gt;&lt;br /&gt;/* On créée une nouvelle ancre */&lt;br /&gt;var AncreNEW = Math.round(Math.random()*1000);&lt;br /&gt;&lt;br /&gt;/* On met à jour l'URL dans la barre d'adresse du navigateur */&lt;br /&gt;window.location.replace(URL + '#' + AncreNEW);&lt;/pre&gt;
&lt;p&gt;Le petit script ci-avant vous montre les étapes clés de la modification de l'URL du navigateur. A vous de l'adapter à votre propre contexte applicatif, mais basiquement, tout est là. &lt;/p&gt;
&lt;h2&gt;Et voila&amp;nbsp;!&lt;/h2&gt;
&lt;p&gt;Oui, oui, ce n'est pas plus compliqué que ça. Avec ce que vous avez vu là, vous êtes capable de rendre vos applications AJAX bookmarquable. Ceci dit, maintenant, il vous reste à faire le plus compliqué&amp;nbsp;: gérer votre contexte au niveau applicatif. Sur ce point, chaque application a ses spécificités et ses besoins. N'hésitez pas à aller voir ce qu'ont fait d'autres développeurs à ce sujet. La première chose à regarder c'est ce qu'offrent les framework Javascript pour gérer cela nativement. Ensuite, si vous en avez le courage, vous pouvez aller voir ce que font des gens comme Google (Gmail, Reader et Wave sont extrêmement instructifs à cet égard... mais c'est horriblement touffu !).&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;em&gt;Un gros merci au deux bisounours d'amour que sont &lt;/em&gt;&lt;a style=&quot;font-style: italic;&quot; hreflang=&quot;fr&quot; href=&quot;http://lachasseauchapin.com/&quot;&gt;Virginie&lt;/a&gt;&lt;em&gt; et &lt;/em&gt;&lt;a style=&quot;font-style: italic;&quot; hreflang=&quot;fr&quot; href=&quot;http://nota-bene.org/&quot;&gt;Stéphane&lt;/a&gt;&lt;em&gt; pour le sauvetage orthographique de ce billet&lt;/em&gt; &lt;img src=&quot;/themes/default/smilies/smile.png&quot; alt=&quot;:)&quot; class=&quot;smiley&quot; /&gt;&lt;/p&gt;</description>

    

      </item>
  
</channel>
</rss>
