<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Blog de Jonathan Petitcolas &#187; xhtml</title>
	<atom:link href="http://www.jonathan-petitcolas.com/tag/xhtml/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.jonathan-petitcolas.com</link>
	<description>Geek, développeur Web, passionné de high-tech</description>
	<lastBuildDate>Sat, 21 Aug 2010 14:47:30 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>La méta Keywords inutile au référencement !</title>
		<link>http://www.jonathan-petitcolas.com/meta-keywords-inutile-referencement/</link>
		<comments>http://www.jonathan-petitcolas.com/meta-keywords-inutile-referencement/#comments</comments>
		<pubDate>Thu, 24 Sep 2009 15:18:19 +0000</pubDate>
		<dc:creator>Jonathan Petitcolas</dc:creator>
				<category><![CDATA[Développement]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[Matt Cutts]]></category>
		<category><![CDATA[meta]]></category>
		<category><![CDATA[seo]]></category>
		<category><![CDATA[xhtml]]></category>

		<guid isPermaLink="false">http://www.jonathan-petitcolas.com/?p=1777</guid>
		<description><![CDATA[Encore bien souvent, des cabinets spécialisés dans le référencement continuent de croire (ou du moins continuent de vouloir faire croire) à l'utilité des balises métas <em>Keywords</em>. Il n'en est absolument rien, comme l'indique clairement Matt Cutts, ingénieur logiciel chez Google.]]></description>
			<content:encoded><![CDATA[<h3>Adieu, balise méta Keywords !</h3>
<p>J'ai, dans mon expérience en tant que développeur Web, souvent fait affaire avec des partenaires externalisant l'optimisation de leur référencement dans une société de SEO (<em>Search Engine Optimisation</em>). Celles-ci me cassaient toutes les pieds à vouloir implémenter sur chaque page une longue liste de mots-clefs dans la balise méta <em>Keywords</em>. Complètement inutile, m'exclamais-je devant le client, généralement persuadé que je connaissais le développement, mais pas forcément le SEO qui était, lui, le coeur de métier de l'autre prestataire. N'ayant de preuve tangible pour le prouver, et devant la suprématie implicite de l'autre agence, que vouliez-vous faire... à part augmenter la facture pour du temps passé à faire un travail aliénant. Car oui, passer sur chaque page pour vérifier/changer les mots-clefs, il y a plus passionant...</p>
<p>Seulement voilà. Aujourd'hui, les choses ont changées ! En visitant le blog de Google réservés aux webmasters, on peut y trouver la <a href="http://googlewebmastercentral.blogspot.com/2009/09/google-does-not-use-keywords-meta-tag.html">preuve tangible et irréfutable de l'inutilité complète de la balise Meta Keywords</a>. Un mythe qui tombe ? Oui, du moins pour les boîtes de SEO. A moins que celles-ci ne s'en servent comme prétexte pour facturer plus cher, permettant à la fois aux développeurs d'augmenter eux-mêmes leurs tarifs ? Possible. Voire même probable. Je vois mal en effet comment une société spécialisée dans les technologies Web peut ignorer cela, à moins de ne pas faire de veille technologique, ce qui est à mon sens suicidaire dans ce milieu en constante évolution.</p>
<p>Pourquoi donc Google et autres moteurs de recherche (je considère essentiellement Google, Yahoo! Et Bing, les autres AltaVista ou Exalead étant bien trop minoritaires) ne se soucient plus de cette balise ? Simplement car tout le monde avait la fâcheuse habitude de tricher. Il est si simple d'inclure les mots "sex", "porn" (et autres termes de ce genre que je ne mettrais pas pour ne pas faire exploser mon taux de rebond :p) afin de faire affluer un nombre de visiteurs des plus important. Ou du moins, il était si simple. Tant d'abus ont été faits que la pertinence des résultats était affaiblie avec cette balise. L'utilité du moteur de recherche en prenait donc un coup.</p>
<h3>Danger des balises méta Keywords</h3>
<p>Certains pensent qu'il vaut mieux laisser les balises méta-keywords. Après tout, cela n'est pas bien long à mettre, cela peut avoir une utilité sur les petits moteurs de recherche qui prennent peut-être encore en compte ces balises, et ces balises seront peut-être réhabilitées dans le futur (même si ce dernier argument est grotesque à mon sens : rien ne pourra empêcher de nouveaux abus). Nous avons donc réellement deux arguments pour l'utilisation de la méta-keywords. Le jeu en vaut-il la chandelle ? Ma réponse est claire : non.</p>
<p>Le premier point est de loin le plus dangereux. Cela ne coûte rien d'ajouter une balise en plus, le temps demandé étant très faible. Première erreur ! Certes, écrire une balise est très rapide, surtout avec un éditeur convenable (Eclipse PDT par exemple). Mais le contenu est plus délicat : trouver les mots-clefs les plus pertinent n'est pas toujours très aisé. Donc, tant qu'à ajouter les balises Keywords, autant y réfléchir afin de les remplir de manière judicieuse.</p>
<p>Mais ce n'est pas fini. Vous donnez par la même occasion de précieuses indications à vos concurrents. La bataille pour la première page de Google est sans pitié. Ainsi, les campagnes de référencement passeront inévitablement par une analyse de vos adversaires en haut du podium. Or, cette balise donnent tous les mots-clefs essentiels sur un plateau, permettant à vos rivaux d'à la fois analyser vos faiblesses en terme de référencement, mais également de récupérer le fruit des études réalisées en amont par les agences spécialisées.</p>
<p>Ainsi, outre être inutiles, ces balises peuvent même nuire à votre référencement en aidant les sites concurrents à vous dépasser. Et vous ne pouvez pas les empêcher vos de lire impitoyablement votre code source. A vos risques et périls donc. ;)</p>
<p>Je pourrais arrêter mon réquisitoire contre cette balise ici. Mais un deuxième argument pourrait éventuellement séduire les plus grands adorateurs de cette balise, celui des "petits" moteurs de recherche. Le réflexe Google est tellement implanté aujourd'hui qu'il est totalement contre-productif d'essayer d'optimiser le tout pour les moteurs exotiques tels que les moteurs des FAI ou ceux dont on entend parler par hasard.</p>
<p>J'invite donc vivement, comme vous avez pu le comprendre, à oublier définitivement cette balise meta-keywords, et à vous concentrer sur la structure sémantique et sur le contenu éditorial de votre site, seuls réels paramètres pour un référencement naturel efficace.</p>
<h3>Explications par Matt Cutts</h3>
<p>Enfin, pour finir, voici une petite explication en vidéo de Matt Cutts, ingénieur logiciel chez Google, qui nous communique régulièrement quelques informations utiles sur le SEO. :)</p>
<div class="video"><object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/jK7IPbnmvVU&#038;color1=0xb1b1b1&#038;color2=0xcfcfcf&#038;hl=en&#038;feature=player_embedded&#038;fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowScriptAccess" value="always"></param><embed src="http://www.youtube.com/v/jK7IPbnmvVU&#038;color1=0xb1b1b1&#038;color2=0xcfcfcf&#038;hl=en&#038;feature=player_embedded&#038;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="425" height="344"></embed></object></div>


<div class="shr-bookmarks shr-bookmarks-expand shr-bookmarks-center shr-bookmarks-bg-knowledge">
<ul class="socials">
		<li class="shr-facebook">
			<a href="http://www.facebook.com/share.php?v=4&amp;src=bm&amp;u=http://www.jonathan-petitcolas.com/meta-keywords-inutile-referencement/&amp;t=La+m%C3%A9ta+Keywords+inutile+au+r%C3%A9f%C3%A9rencement+%21" rel="nofollow" class="external" title="Share this on Facebook">Share this on Facebook</a>
		</li>
		<li class="shr-twitter">
			<a href="http://twitter.com/home?status=Jonathan+Petitcolas+%3A+La+m%C3%A9ta+Keywords+inutile+au+r%C3%A9f%C3%A9rencement+%21+-+http://tinyurl.com/yc7oqj7&amp;source=shareaholic" rel="nofollow" class="external" title="Tweet This!">Tweet This!</a>
		</li>
		<li class="shr-netvibes">
			<a href="http://www.netvibes.com/share?title=La+m%C3%A9ta+Keywords+inutile+au+r%C3%A9f%C3%A9rencement+%21&amp;url=http://www.jonathan-petitcolas.com/meta-keywords-inutile-referencement/" rel="nofollow" class="external" title="Submit this to Netvibes">Submit this to Netvibes</a>
		</li>
		<li class="shr-linkedin">
			<a href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http://www.jonathan-petitcolas.com/meta-keywords-inutile-referencement/&amp;title=La+m%C3%A9ta+Keywords+inutile+au+r%C3%A9f%C3%A9rencement+%21&amp;summary=Encore%20bien%20souvent%2C%20des%20cabinets%20sp%C3%A9cialis%C3%A9s%20dans%20le%20r%C3%A9f%C3%A9rencement%20continuent%20de%20croire%20%28ou%20du%20moins%20continuent%20de%20vouloir%20faire%20croire%29%20%C3%A0%20l%27utilit%C3%A9%20des%20balises%20m%C3%A9tas%20Keywords.%20Il%20n%27en%20est%20absolument%20rien%2C%20comme%20l%27indique%20clairement%20Matt%20Cutts%2C%20ing%C3%A9nieur%20logiciel%20chez%20Google.&amp;source=Blog de Jonathan Petitcolas" rel="nofollow" class="external" title="Share this on LinkedIn">Share this on LinkedIn</a>
		</li>
		<li class="shr-googlebuzz">
			<a href="http://www.google.com/buzz/post?url=http://www.jonathan-petitcolas.com/meta-keywords-inutile-referencement/&amp;imageurl=" rel="nofollow" class="external" title="Post on Google Buzz">Post on Google Buzz</a>
		</li>
		<li class="shr-googlereader">
			<a href="http://www.google.com/reader/link?url=http://www.jonathan-petitcolas.com/meta-keywords-inutile-referencement/&amp;title=La+m%C3%A9ta+Keywords+inutile+au+r%C3%A9f%C3%A9rencement+%21&amp;srcUrl=http://www.jonathan-petitcolas.com/meta-keywords-inutile-referencement/&amp;srcTitle=La+m%C3%A9ta+Keywords+inutile+au+r%C3%A9f%C3%A9rencement+%21&amp;snippet=Encore%20bien%20souvent%2C%20des%20cabinets%20sp%C3%A9cialis%C3%A9s%20dans%20le%20r%C3%A9f%C3%A9rencement%20continuent%20de%20croire%20%28ou%20du%20moins%20continuent%20de%20vouloir%20faire%20croire%29%20%C3%A0%20l%27utilit%C3%A9%20des%20balises%20m%C3%A9tas%20Keywords.%20Il%20n%27en%20est%20absolument%20rien%2C%20comme%20l%27indique%20clairement%20Matt%20Cutts%2C%20ing%C3%A9nieur%20logiciel%20chez%20Google." rel="nofollow" class="external" title="Add this to Google Reader">Add this to Google Reader</a>
		</li>
		<li class="shr-digg">
			<a href="http://digg.com/submit?phase=2&amp;url=http://www.jonathan-petitcolas.com/meta-keywords-inutile-referencement/&amp;title=La+m%C3%A9ta+Keywords+inutile+au+r%C3%A9f%C3%A9rencement+%21" rel="nofollow" class="external" title="Digg this!">Digg this!</a>
		</li>
		<li class="shr-delicious">
			<a href="http://delicious.com/post?url=http://www.jonathan-petitcolas.com/meta-keywords-inutile-referencement/&amp;title=La+m%C3%A9ta+Keywords+inutile+au+r%C3%A9f%C3%A9rencement+%21" rel="nofollow" class="external" title="Share this on del.icio.us">Share this on del.icio.us</a>
		</li>
		<li class="shr-comfeed">
			<a href="http://www.jonathan-petitcolas.com/meta-keywords-inutile-referencement/feed" rel="nofollow" class="external" title="Subscribe to the comments for this post?">Subscribe to the comments for this post?</a>
		</li>
</ul>
<div style="clear:both;"></div>
</div>

]]></content:encoded>
			<wfw:commentRss>http://www.jonathan-petitcolas.com/meta-keywords-inutile-referencement/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>External Opener : ouvrir les liens dans un nouvel onglet en XHTML Strict</title>
		<link>http://www.jonathan-petitcolas.com/external-opener-ouvrir-les-liens-dans-un-nouvel-onglet-en-xhtml-strict/</link>
		<comments>http://www.jonathan-petitcolas.com/external-opener-ouvrir-les-liens-dans-un-nouvel-onglet-en-xhtml-strict/#comments</comments>
		<pubDate>Fri, 21 Aug 2009 11:00:04 +0000</pubDate>
		<dc:creator>Jonathan Petitcolas</dc:creator>
				<category><![CDATA[Développement]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[mootools]]></category>
		<category><![CDATA[xhtml]]></category>

		<guid isPermaLink="false">http://www.jonathan-petitcolas.com/?p=1263</guid>
		<description><![CDATA[Voici différents scripts (un en Javascript pur, les autres utilisant les frameworks les plus utilisés sur le Web) permettant l'ouverture des liens externes dans une nouvelle fenêtre, en évitant les <em>target="_blank"</em> qui ne sont pas valides XHTML strict. ]]></description>
			<content:encoded><![CDATA[<p>Je vous avais déjà parlé, dans un précédent article, d'une manière d'<a href="http://www.jonathan-petitcolas.com/ouvrir-un-lien-dans-un-nouvel-onglet-en-xhtml-strict/">ouvrir un lien dans un nouvel onglet en XHTML strict</a>. Vu le succès (relatif) de ce petit script, j'ai décidé de vous les publier ici. Vous n'aurez ainsi plus qu'à les utiliser sur votre site, en les incluant à la fin de votre balise <em>head</em>.</p>
<ul>
<li><a href='http://www.jonathan-petitcolas.com/wp-content/uploads/2009/08/js-external-opener.js.txt'>Javascript External Opener - Version en Javascript pur (pas de framework)</a></li>
<li><a href='http://www.jonathan-petitcolas.com/wp-content/uploads/2009/08/mootools-external-opener.js.txt'>MooTools External Opener - Version utilisant le framework MooTools</a></li>
<li><a href='http://www.jonathan-petitcolas.com/wp-content/uploads/2009/08/jquery-external-opener.js.txt'>JQuery External Opener - Version utilisant le framework JQuery</a> (merci à <a href="http://www.point2zero.net/blog/">ChoiZ</a>)</li>
</ul>
<p>N'hésitez pas à utiliser ce script sur tous vos projets, ainsi qu'à me faire part de toutes vos suggestions d'optimisation. </p>
<p>Par ailleurs, si certains d'entre vous ont une version avec un autre framework, n'hésitez pas à me contacter. Je la rajouterai dans cette liste.</p>


<div class="shr-bookmarks shr-bookmarks-expand shr-bookmarks-center shr-bookmarks-bg-knowledge">
<ul class="socials">
		<li class="shr-facebook">
			<a href="http://www.facebook.com/share.php?v=4&amp;src=bm&amp;u=http://www.jonathan-petitcolas.com/external-opener-ouvrir-les-liens-dans-un-nouvel-onglet-en-xhtml-strict/&amp;t=External+Opener+%3A+ouvrir+les+liens+dans+un+nouvel+onglet+en+XHTML+Strict" rel="nofollow" class="external" title="Share this on Facebook">Share this on Facebook</a>
		</li>
		<li class="shr-twitter">
			<a href="http://twitter.com/home?status=Jonathan+Petitcolas+%3A+External+Opener+%3A+ouvrir+les+liens+dans+un+nouvel+onglet+en+XHTML+Strict+-+http://tinyurl.com/n5k8fx&amp;source=shareaholic" rel="nofollow" class="external" title="Tweet This!">Tweet This!</a>
		</li>
		<li class="shr-netvibes">
			<a href="http://www.netvibes.com/share?title=External+Opener+%3A+ouvrir+les+liens+dans+un+nouvel+onglet+en+XHTML+Strict&amp;url=http://www.jonathan-petitcolas.com/external-opener-ouvrir-les-liens-dans-un-nouvel-onglet-en-xhtml-strict/" rel="nofollow" class="external" title="Submit this to Netvibes">Submit this to Netvibes</a>
		</li>
		<li class="shr-linkedin">
			<a href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http://www.jonathan-petitcolas.com/external-opener-ouvrir-les-liens-dans-un-nouvel-onglet-en-xhtml-strict/&amp;title=External+Opener+%3A+ouvrir+les+liens+dans+un+nouvel+onglet+en+XHTML+Strict&amp;summary=Voici%20diff%C3%A9rents%20scripts%20%28un%20en%20Javascript%20pur%2C%20les%20autres%20utilisant%20les%20frameworks%20les%20plus%20utilis%C3%A9s%20sur%20le%20Web%29%20permettant%20l%27ouverture%20des%20liens%20externes%20dans%20une%20nouvelle%20fen%C3%AAtre%2C%20en%20%C3%A9vitant%20les%20target%3D%22_blank%22%20qui%20ne%20sont%20pas%20valides%20XHTML%20strict.%20&amp;source=Blog de Jonathan Petitcolas" rel="nofollow" class="external" title="Share this on LinkedIn">Share this on LinkedIn</a>
		</li>
		<li class="shr-googlebuzz">
			<a href="http://www.google.com/buzz/post?url=http://www.jonathan-petitcolas.com/external-opener-ouvrir-les-liens-dans-un-nouvel-onglet-en-xhtml-strict/&amp;imageurl=" rel="nofollow" class="external" title="Post on Google Buzz">Post on Google Buzz</a>
		</li>
		<li class="shr-googlereader">
			<a href="http://www.google.com/reader/link?url=http://www.jonathan-petitcolas.com/external-opener-ouvrir-les-liens-dans-un-nouvel-onglet-en-xhtml-strict/&amp;title=External+Opener+%3A+ouvrir+les+liens+dans+un+nouvel+onglet+en+XHTML+Strict&amp;srcUrl=http://www.jonathan-petitcolas.com/external-opener-ouvrir-les-liens-dans-un-nouvel-onglet-en-xhtml-strict/&amp;srcTitle=External+Opener+%3A+ouvrir+les+liens+dans+un+nouvel+onglet+en+XHTML+Strict&amp;snippet=Voici%20diff%C3%A9rents%20scripts%20%28un%20en%20Javascript%20pur%2C%20les%20autres%20utilisant%20les%20frameworks%20les%20plus%20utilis%C3%A9s%20sur%20le%20Web%29%20permettant%20l%27ouverture%20des%20liens%20externes%20dans%20une%20nouvelle%20fen%C3%AAtre%2C%20en%20%C3%A9vitant%20les%20target%3D%22_blank%22%20qui%20ne%20sont%20pas%20valides%20XHTML%20strict.%20" rel="nofollow" class="external" title="Add this to Google Reader">Add this to Google Reader</a>
		</li>
		<li class="shr-digg">
			<a href="http://digg.com/submit?phase=2&amp;url=http://www.jonathan-petitcolas.com/external-opener-ouvrir-les-liens-dans-un-nouvel-onglet-en-xhtml-strict/&amp;title=External+Opener+%3A+ouvrir+les+liens+dans+un+nouvel+onglet+en+XHTML+Strict" rel="nofollow" class="external" title="Digg this!">Digg this!</a>
		</li>
		<li class="shr-delicious">
			<a href="http://delicious.com/post?url=http://www.jonathan-petitcolas.com/external-opener-ouvrir-les-liens-dans-un-nouvel-onglet-en-xhtml-strict/&amp;title=External+Opener+%3A+ouvrir+les+liens+dans+un+nouvel+onglet+en+XHTML+Strict" rel="nofollow" class="external" title="Share this on del.icio.us">Share this on del.icio.us</a>
		</li>
		<li class="shr-comfeed">
			<a href="http://www.jonathan-petitcolas.com/external-opener-ouvrir-les-liens-dans-un-nouvel-onglet-en-xhtml-strict/feed" rel="nofollow" class="external" title="Subscribe to the comments for this post?">Subscribe to the comments for this post?</a>
		</li>
</ul>
<div style="clear:both;"></div>
</div>

]]></content:encoded>
			<wfw:commentRss>http://www.jonathan-petitcolas.com/external-opener-ouvrir-les-liens-dans-un-nouvel-onglet-en-xhtml-strict/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Ouvrir un lien dans un nouvel onglet en XHTML Strict</title>
		<link>http://www.jonathan-petitcolas.com/ouvrir-un-lien-dans-un-nouvel-onglet-en-xhtml-strict/</link>
		<comments>http://www.jonathan-petitcolas.com/ouvrir-un-lien-dans-un-nouvel-onglet-en-xhtml-strict/#comments</comments>
		<pubDate>Sat, 25 Jul 2009 15:20:37 +0000</pubDate>
		<dc:creator>Jonathan Petitcolas</dc:creator>
				<category><![CDATA[Développement]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[mootools]]></category>
		<category><![CDATA[xhtml]]></category>

		<guid isPermaLink="false">http://www.jonathan-petitcolas.com/?p=1198</guid>
		<description><![CDATA[Ouvrir un lien dans un nouvel onglet est facile avec les anciennes normes HTML. Il suffisait d'un simple <em>target</em> à ajouter à la balise. Mais comment faire en XHTML strict ? Avec Javascript. La réponse dans ce billet.]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.jonathan-petitcolas.com/wp-content/uploads/2009/07/www.jpg" alt="World Wide Web" title="World Wide Web" width="240" height="189" class="size-full wp-image-1208 alignRight" style="float: right; margin-left: 10px;"/></p>
<p>Comment ouvrir un lien dans une nouvelle fenêtre ? La réponse pourrait sembler bien simple : il suffit d'utiliser l'attribut <em>target</em>. Cela fonctionnera, certes. Cependant, cela ne respectera pas les dernières normes XHTML strictes. Comment peut-on alors concilier cette fonctionnalité avec le respect des standards du Web ? Il existe plusieurs méthodes de procéder.</p>
<p>Tout d'abord, pourquoi avoir enlevé cet attribut ? Imaginons un quidam lambda ne connaissant pas grand chose à la technologie. Il navigue sur un site Internet, et utilise le bouton <em>Précédent</em> pour revenir en arrière, n'ayant pas envie de rechercher un éventuel lien <em>Retour à l'accueil</em>. Maintenant, si on ouvre une nouvelle fenêtre à cet internaute, la navigation par historique ne fonctionnera pas : il sera obligé de fermer cette fenêtre pour revenir à la page précédente. Comportement fort peu intuitif. </p>
<p>Afin d'empêcher ce genre d'hérésie ergonomique, le <a href="http://www.w3.org">W3C</a> a décidé d'instaurer une nouvelle norme : c'est à l'utilisateur d'ouvrir une nouvelle fenêtre, et non pas au développeur de lui forcer la main. Exit donc le <em>target="_blank"</em>. Cette fonctionnalité a été reprise par de nombreux (si ce n'est tous) navigateurs récents. Il suffit généralement de faire un CTRL + clic ou un clic sur la molette de votre souris pour ouvrir un nouvel onglet. </p>
<p>Problème : l'utilisateur n'est pas forcément au courant de ces astuces. Et, même si cela n'est généralement pas très gênant, fermer le site en cours pour rediriger l'internaute vers un lien partenaire n'est pas commercialement très encourageant. Il peut donc être intéressant, lorsqu'il s'agit d'un lien externe, d'ouvrir un nouvel onglet. On ne peut cependant pas le spécifier en XHTML, sous peine de se faire rejeter par le validateur. Il existe cependant quelques moyens de contournements.</p>
<p><span id="more-1198"></span></p>
<p>C'est la  plus simple, et celle dont je viens de vous signaler la non-conformité aux normes. Cependant, mais cela n'engage que moi, je considère les normes comme un <em>must-have</em>, mais m'autorise quelques écartades, du moment que cela ne bouleverse pas toute l'architecture, et que cela peut apporter un plus ergonomique à l'utilisateur (par exemple, pour proposer le téléchargement d'un document, et éviter que l'internaute ne se retrouve devant une page blanche). Il ne faut en effet pas perdre de vue, comme c'est hélas bien trop souvent le cas, que l'utilisateur qui nous ramènera notoriété et prospérité est bien l'internaute, et en aucun cas les moteurs de recherche ou les validateurs. </p>
<pre class="brush: xml;">&lt;a href=&quot;http://www.google.fr&quot; target=&quot;_blank&quot;&gt;Google&lt;/a&gt;</pre>
<p>Afin de respecter les normes, et comme les validateurs ne sont pas capables d'interpréter le Javascript, nous allons utiliser ce langage afin de tricher. On ne reviendra pas sur le sens moral de cet acte. Nous utiliserons pour ce faire le framework <a href="http://www.mootools.net">MooTools</a>.</p>
<pre class="brush: jscript;">window.addEvent('domready', function(e){
	$each($$('a'), function(item){
		item.setProperty('target', '_blank');
	}
});</pre>
<p>Et voilà comment, en 5 lignes de code, ouvrir tous les liens de la page dans une nouvelle fenêtre. Quelques explications...</p>
<p>Tout d'abord, nous utilisons la fonction <em>addEvent</em>, qui va permettre de rajouter un événement sur un élément, ici, la fenêtre (<em>window</em>). L'événement concerné sera <em>domready</em>. Cela signifie que la function anonyme passée en second argument ne sera executée que lorsque le modèle DOM sera prêt, c'est à dire une fois que toutes les balises seront créées et placées au bon endroit dans la page.</p>
<p>Une fois que le modèle DOM est prêt, nous allons itérer grâce à la fonction <em>$each</em> sur l'ensemble des balises de lien de la page. La fonction double dollars (<em>$$</em>) permet en effet de récupérer tous les éléments répondant au critère CSS passé en argument. Puis, pour chaque élément satisfaisant cette condition, nous lui ajoutons un attribut (une propriété dans le jargon MooTools) : nous attribuons à <em>target</em> la valeur <em>_blank</em>.</p>
<p>Cela fonctionne. Seul bémol, tous les liens seront ouverts dans une nouvelle fenêtre, même les liens internes. Ce qui peut poser un problème ergonomique majeur. Il nous faudra donc vérifier la cible du lien. Si celle-ci se rapporte à un domaine externe, alors (et seulement dans ce cas) on ajoute l'attribut <em>target</em>. Pour ce faire, rien de bien compliqué, avec une expression régulière... </p>
<pre class="brush: jscript;">window.addEvent('domready', function(e){

	var siteUrl = document.location.hostname;

	$each($$('a'), function(item){
		var linkUrl = item.get('href');
		if(linkUrl.test(&quot;^http://&quot;) &amp;&amp; !linkUrl.test(&quot;^http://(www\.)?&quot; + siteUrl))
			item.setProperty('target', '_blank');
	});
});</pre>
<p>On récupère dans un premier temps le nom de domaine de la page en cours, que nous stockons dans <em>siteUrl</em>. Puis, nous récupérons la cible du lien, que nous plaçons dans <em>linkUrl</em>. Enfin, nous regardons si <em>linkUrl</em> satisfait l'expression régulière concernant au domaine en cours (avec ou sans les <em>www</em>), afin de placer ou non l'attribut <em>target</em>. A noter que dans le cas où il n'y ait pas de <em>http://</em>, il s'agit d'un lien interne, et donc il est hors de question d'ajouter l'attribut <em>target</em>. </p>
<p>Et c'est tout. A présent, tous les liens externes s'ouvriront dans une nouvelle fenêtre. Il ne vous suffit plus que d'inclure ce script (ainsi que MooTools) sur toutes les pages de votre site, et vous n'aurez plus ces fuites de visiteurs. ;)</p>
<p><em>[MAJ 21/08/2009 : modification de l'expression régulière dans le dernier script, pour prendre en compte les liens sans </em><em>http://</em>.]</p>


<div class="shr-bookmarks shr-bookmarks-expand shr-bookmarks-center shr-bookmarks-bg-knowledge">
<ul class="socials">
		<li class="shr-facebook">
			<a href="http://www.facebook.com/share.php?v=4&amp;src=bm&amp;u=http://www.jonathan-petitcolas.com/ouvrir-un-lien-dans-un-nouvel-onglet-en-xhtml-strict/&amp;t=Ouvrir+un+lien+dans+un+nouvel+onglet+en+XHTML+Strict" rel="nofollow" class="external" title="Share this on Facebook">Share this on Facebook</a>
		</li>
		<li class="shr-twitter">
			<a href="http://twitter.com/home?status=Jonathan+Petitcolas+%3A+Ouvrir+un+lien+dans+un+nouvel+onglet+en+XHTML+Strict+-+http://tinyurl.com/nzssnr&amp;source=shareaholic" rel="nofollow" class="external" title="Tweet This!">Tweet This!</a>
		</li>
		<li class="shr-netvibes">
			<a href="http://www.netvibes.com/share?title=Ouvrir+un+lien+dans+un+nouvel+onglet+en+XHTML+Strict&amp;url=http://www.jonathan-petitcolas.com/ouvrir-un-lien-dans-un-nouvel-onglet-en-xhtml-strict/" rel="nofollow" class="external" title="Submit this to Netvibes">Submit this to Netvibes</a>
		</li>
		<li class="shr-linkedin">
			<a href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http://www.jonathan-petitcolas.com/ouvrir-un-lien-dans-un-nouvel-onglet-en-xhtml-strict/&amp;title=Ouvrir+un+lien+dans+un+nouvel+onglet+en+XHTML+Strict&amp;summary=Ouvrir%20un%20lien%20dans%20un%20nouvel%20onglet%20est%20facile%20avec%20les%20anciennes%20normes%20HTML.%20Il%20suffisait%20d%27un%20simple%20target%20%C3%A0%20ajouter%20%C3%A0%20la%20balise.%20Mais%20comment%20faire%20en%20XHTML%20strict%20%3F%20Avec%20Javascript.%20La%20r%C3%A9ponse%20dans%20ce%20billet.&amp;source=Blog de Jonathan Petitcolas" rel="nofollow" class="external" title="Share this on LinkedIn">Share this on LinkedIn</a>
		</li>
		<li class="shr-googlebuzz">
			<a href="http://www.google.com/buzz/post?url=http://www.jonathan-petitcolas.com/ouvrir-un-lien-dans-un-nouvel-onglet-en-xhtml-strict/&amp;imageurl=" rel="nofollow" class="external" title="Post on Google Buzz">Post on Google Buzz</a>
		</li>
		<li class="shr-googlereader">
			<a href="http://www.google.com/reader/link?url=http://www.jonathan-petitcolas.com/ouvrir-un-lien-dans-un-nouvel-onglet-en-xhtml-strict/&amp;title=Ouvrir+un+lien+dans+un+nouvel+onglet+en+XHTML+Strict&amp;srcUrl=http://www.jonathan-petitcolas.com/ouvrir-un-lien-dans-un-nouvel-onglet-en-xhtml-strict/&amp;srcTitle=Ouvrir+un+lien+dans+un+nouvel+onglet+en+XHTML+Strict&amp;snippet=Ouvrir%20un%20lien%20dans%20un%20nouvel%20onglet%20est%20facile%20avec%20les%20anciennes%20normes%20HTML.%20Il%20suffisait%20d%27un%20simple%20target%20%C3%A0%20ajouter%20%C3%A0%20la%20balise.%20Mais%20comment%20faire%20en%20XHTML%20strict%20%3F%20Avec%20Javascript.%20La%20r%C3%A9ponse%20dans%20ce%20billet." rel="nofollow" class="external" title="Add this to Google Reader">Add this to Google Reader</a>
		</li>
		<li class="shr-digg">
			<a href="http://digg.com/submit?phase=2&amp;url=http://www.jonathan-petitcolas.com/ouvrir-un-lien-dans-un-nouvel-onglet-en-xhtml-strict/&amp;title=Ouvrir+un+lien+dans+un+nouvel+onglet+en+XHTML+Strict" rel="nofollow" class="external" title="Digg this!">Digg this!</a>
		</li>
		<li class="shr-delicious">
			<a href="http://delicious.com/post?url=http://www.jonathan-petitcolas.com/ouvrir-un-lien-dans-un-nouvel-onglet-en-xhtml-strict/&amp;title=Ouvrir+un+lien+dans+un+nouvel+onglet+en+XHTML+Strict" rel="nofollow" class="external" title="Share this on del.icio.us">Share this on del.icio.us</a>
		</li>
		<li class="shr-comfeed">
			<a href="http://www.jonathan-petitcolas.com/ouvrir-un-lien-dans-un-nouvel-onglet-en-xhtml-strict/feed" rel="nofollow" class="external" title="Subscribe to the comments for this post?">Subscribe to the comments for this post?</a>
		</li>
</ul>
<div style="clear:both;"></div>
</div>

]]></content:encoded>
			<wfw:commentRss>http://www.jonathan-petitcolas.com/ouvrir-un-lien-dans-un-nouvel-onglet-en-xhtml-strict/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
	</channel>
</rss>
