<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet title="XSL formatting" type="text/xsl" href="https://dascritch.net/feed/rss2/xslt" ?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>da scritch net works - Mot-clé - html      - Commentaires</title>
    <link>https://dascritch.net/</link>
    <atom:link href="https://dascritch.net/feed/tag/html/rss2/comments" rel="self" type="application/rss+xml" />
    <description>Ma vie et tous ses ridicules petits à-côtés : mes émissions “CPU” sur Radio FMR, les standards web, le code et ce qui me passe par la tête.</description>
    <language>fr</language>
    <pubDate>Tue, 09 Jun 2026 06:48:08 +0200</pubDate>
    <copyright>CC pour les textes</copyright>
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    <generator>Dotclear</generator>
                        <item>
          <title>Json ou l'histoire d'une licence presque libre - DaScritch</title>
          <link>https://dascritch.net/post/2014/01/07/Json-ou-l-histoire-d-une-licence-presque-libre#c42447</link>
          <guid isPermaLink="false">urn:md5:0ba97487e672a25d420f1383097476e9</guid>
          <pubDate>Wed, 19 May 2021 15:45:20 +0200</pubDate>
          <dc:creator>DaScritch</dc:creator>
          <description>&lt;p&gt;La vidéo est accessible ici : &lt;a href=&quot;https://web.archive.org/web/20170829155136im_/http://stream.toulibre.org/cdl2013/grand-public/mouton-dusbosc-json-license-presque-libre.mp4&quot; title=&quot;https://web.archive.org/web/20170829155136im_/http://stream.toulibre.org/cdl2013/grand-public/mouton-dusbosc-json-license-presque-libre.mp4&quot; rel=&quot;ugc&quot;&gt;https://web.archive.org/web/2017082...&lt;/a&gt;&lt;/p&gt;</description>
        </item>
                              <item>
          <title>Reconstruire son lecteur audio pour le web - David10</title>
          <link>https://dascritch.net/post/2018/11/06/Reconstruire-son-lecteur-audio-pour-le-web#c42433</link>
          <guid isPermaLink="false">urn:md5:1f75c79e63c8f61a2107d7f579d3718f</guid>
          <pubDate>Tue, 09 Mar 2021 08:24:54 +0100</pubDate>
          <dc:creator>David10</dc:creator>
          <description>&lt;p&gt;Super taf! Je suis en train de coder le player HTML5 natif pour l'améliorer,&lt;br /&gt;
malheureusement, je suis tombé sur un bug d'iOS... incompréhensible.&lt;/p&gt;


&lt;p&gt;si quelqu'un sait pourquoi &amp;lt;audio&amp;gt; ne s'affiche pas bien sur iPhone, merci d'éclairer ma lanterne :)&lt;/p&gt;</description>
        </item>
                              <item>
          <title>Retravailler un lecteur web audio dans les petites largeurs - Da Scritch</title>
          <link>https://dascritch.net/post/2019/06/05/Retravailler-un-lecteur-web-audio-dans-les-petites-largeurs#c42398</link>
          <guid isPermaLink="false">urn:md5:60c3cc16a40773d1e75a4ba5b3ce1361</guid>
          <pubDate>Fri, 07 Jun 2019 09:58:07 +0200</pubDate>
          <dc:creator>Da Scritch</dc:creator>
          <description>&lt;p&gt;Hello Nab !&lt;/p&gt;


&lt;p&gt;Oui, ce qui ressemble beaucoup au mode jog dial que je décris après, tel qu'on l'a sur des outils professionnels, et comme je le dis, c'est pas infaisable, mais peu pratique, surement très difficile à rendre accessible et prend une place assez importante qui n'entre pas dans l'idée d'un web component réutilisable en design liquide.&lt;/p&gt;


&lt;p&gt;Mais rien n'empêche de reconcevoir cette idée avec un skin de mon player, qui se mettrait à ka place du rendu de base.&lt;/p&gt;</description>
        </item>
                              <item>
          <title>Retravailler un lecteur web audio dans les petites largeurs - Nab</title>
          <link>https://dascritch.net/post/2019/06/05/Retravailler-un-lecteur-web-audio-dans-les-petites-largeurs#c42397</link>
          <guid isPermaLink="false">urn:md5:18d35706bc04e34b18ee19468c0f7252</guid>
          <pubDate>Fri, 07 Jun 2019 09:36:28 +0200</pubDate>
          <dc:creator>Nab</dc:creator>
          <description>&lt;p&gt;Autre piste, l'app android libre MusicPiped offre une alternative assez intéressante à la ligne droite : une ligne radiale qui est très sympathique au doigt et a l'avantage de permettre un positionnement assez fin en mode portait. Sur un desktop, même si un peu moins pratique, ça devrait rester une solution correcte.&lt;br /&gt;
Screenshot : &lt;a href=&quot;https://github.com/deep-gaurav/MusicPiped/blob/master/fastlane/metadata/android/en-US/images/phoneScreenshots/shot_03.png&quot; title=&quot;https://github.com/deep-gaurav/MusicPiped/blob/master/fastlane/metadata/android/en-US/images/phoneScreenshots/shot_03.png&quot; rel=&quot;ugc&quot;&gt;https://github.com/deep-gaurav/Musi...&lt;/a&gt;&lt;/p&gt;


&lt;p&gt;Bon courage et merci :-)&lt;/p&gt;</description>
        </item>
                              <item>
          <title>Reconstruire son lecteur audio pour le web - Da Scritch</title>
          <link>https://dascritch.net/post/2018/11/06/Reconstruire-son-lecteur-audio-pour-le-web#c42381</link>
          <guid isPermaLink="false">urn:md5:fed2f00f305acc6b945af921b93a5c11</guid>
          <pubDate>Tue, 27 Nov 2018 08:43:45 +0100</pubDate>
          <dc:creator>Da Scritch</dc:creator>
          <description>&lt;p&gt;Excellent article par Mozilla hacks&lt;br /&gt;
&lt;a href=&quot;https://hacks.mozilla.org/2018/11/the-power-of-web-components/&quot; title=&quot;https://hacks.mozilla.org/2018/11/the-power-of-web-components/&quot; rel=&quot;ugc&quot;&gt;https://hacks.mozilla.org/2018/11/t...&lt;/a&gt;&lt;/p&gt;</description>
        </item>
                              <item>
          <title>Reconstruire son lecteur audio pour le web - nzo</title>
          <link>https://dascritch.net/post/2018/11/06/Reconstruire-son-lecteur-audio-pour-le-web#c42374</link>
          <guid isPermaLink="false">urn:md5:c00db4aa625f97a63619554938ebd929</guid>
          <pubDate>Wed, 07 Nov 2018 10:07:22 +0100</pubDate>
          <dc:creator>nzo</dc:creator>
          <description>&lt;p&gt;Très bon article, j'apprécie bien le déroulé de l'argumentaire. Bonne continuation à vous !&lt;/p&gt;


&lt;p&gt;C'est rafraîchissant de lire de bons articles complets et documentés !&lt;/p&gt;</description>
        </item>
                              <item>
          <title>Reconstruire son lecteur audio pour le web - Matthieu V</title>
          <link>https://dascritch.net/post/2018/11/06/Reconstruire-son-lecteur-audio-pour-le-web#c42373</link>
          <guid isPermaLink="false">urn:md5:11346605e8b4806d6b43cd63fc63fffd</guid>
          <pubDate>Wed, 07 Nov 2018 08:29:28 +0100</pubDate>
          <dc:creator>Matthieu V</dc:creator>
          <description>&lt;p&gt;Super post ! Tu apportes une très belle vision globale de ce que devrait être le développement Web !&lt;/p&gt;</description>
        </item>
                              <item>
          <title>Reconstruire son lecteur audio pour le web - Franck</title>
          <link>https://dascritch.net/post/2018/11/06/Reconstruire-son-lecteur-audio-pour-le-web#c42372</link>
          <guid isPermaLink="false">urn:md5:4de306b62cb3af9bdb17124f88864d70</guid>
          <pubDate>Tue, 06 Nov 2018 19:24:30 +0100</pubDate>
          <dc:creator>Franck</dc:creator>
          <description>&lt;p&gt;C'est super intéressant ! Merci d'avoir pris le temps de détailler de cette façon toute la conception et le développement.&lt;/p&gt;</description>
        </item>
                              <item>
          <title>Firefox, l'invisible - jonjon</title>
          <link>https://dascritch.net/post/2017/01/12/Firefox%2C-l-invisible#c11699</link>
          <guid isPermaLink="false">urn:md5:6e50f5efdb0d196040b8add3c9ebf5f7</guid>
          <pubDate>Sat, 13 Jan 2018 13:46:40 +0100</pubDate>
          <dc:creator>jonjon</dc:creator>
          <description>&lt;p&gt;Un sujet intéréssant, mais un article très fouillis et approximatif en plus d'être biaisé et inutilement centré sur Firefox.&lt;/p&gt;


&lt;p&gt;Par exemple l'approche &quot;Firefox a t'il une audience sous-estimée&quot; devient &quot;Firefox (et Brave et Safari) sont sous-estimés par les outils d'analyse de trafic&quot; ce qui n'est plus du tout la même chose. Le cadre général de départ laisse penser  qu'on parle des rapports d'audience publié par statcounter, akamai, net marketshare, etc. alors qu'il s'agit en fait de google analytics.  Alors la question n'a plus lieu d'être puisque l'on sait que les outils d'analyse de trafic ne sont ni précis, ni fiables.&lt;br /&gt;
Pourquoi vouloir faire passer firefox comme une cible alors que ce phénomène touche tous les navigateurs et est bien connu des usagers d'opera par le passé car certains site web sniffait opera pour lui envoyer des pages défectueuses et ainsi faire croire à l'usager que son navigateur était buggé.&lt;/p&gt;


&lt;p&gt;On se demande pourquoi firefox est présenté comme apportant une innovation en intégrant des fonctions de filtrage alors que mozilla a sciemment refusé pendant des années de répondre à cette demande de ses usagers en invoquant des motifs fallacieux tandis que cette fonction de blocage était intégrée dans de nombreux autres navigateurs comme opera, avant browser, maxthon, etc.&lt;/p&gt;


&lt;p&gt;Pourquoi présenter le Do Not Track comme une avancée alors que c'est un échec cuisant puisque ce réglage est totalement ignoré par les pubs et pisteurs.&lt;/p&gt;


&lt;p&gt;Le blocage des pubs serait illégal aux états-unis alors qu'aucun action en justice n'a encore été prise et tout semble indiquer que la raison est simplement parce que bloquer les pubs n'est pas illégal: &lt;a href=&quot;https://papers.ssrn.com/sol3/papers.cfm?abstract_id=3019254&quot; title=&quot;https://papers.ssrn.com/sol3/papers.cfm?abstract_id=3019254&quot; rel=&quot;ugc&quot;&gt;https://papers.ssrn.com/sol3/papers...&lt;/a&gt; &lt;a href=&quot;http://adage.com/article/digital/legal-war-ad-blocking/300676/&quot; title=&quot;http://adage.com/article/digital/legal-war-ad-blocking/300676/&quot; rel=&quot;ugc&quot;&gt;http://adage.com/article/digital/le...&lt;/a&gt;&lt;/p&gt;


&lt;p&gt;C'est une chose de perpétuer le mythe qui dit que Chrome aurait gagné sa position dominante sur la base du mérite alors qu'en fait c'est le résultat du marketing agressif de google qui a profité de sa position dominante pour imposer son navigateur.&lt;/p&gt;


&lt;p&gt;Utiliser le user-agent pour identifier un navigateur n'est pas fiable et cette entête est optionnelle: &lt;a href=&quot;https://tools.ietf.org/html/rfc7231#section-5.5.3&quot; title=&quot;https://tools.ietf.org/html/rfc7231#section-5.5.3&quot; rel=&quot;ugc&quot;&gt;https://tools.ietf.org/html/rfc7231...&lt;/a&gt; &lt;a href=&quot;https://en.wikipedia.org/wiki/Usage_share_of_web_browsers#User_agent_spoofing&quot; title=&quot;https://en.wikipedia.org/wiki/Usage_share_of_web_browsers#User_agent_spoofing&quot; rel=&quot;ugc&quot;&gt;https://en.wikipedia.org/wiki/Usage...&lt;/a&gt;&lt;/p&gt;


&lt;p&gt;Le lien entre bloqueur de pub et une moindre détection par les outils d'analyse de trafic relève de la corrélation et non de la causalité. Par contre l'usage de noscript dans firefox va automatiquement rendre inopérant les outils d'analyse de visites qui reposent sur le javascript, comme google analytics. Ou encore les outils de filtrage de contenus comme ublock origin qui bloquent le pistage et accessoirement aussi les publicités vont aussi bloquer traqueurs et pistage puisque c'est leur rôle.&lt;/p&gt;


&lt;p&gt;Bref cet article aurait gagné a être plus court, mieux documenté et rédigé de manière plus générale.&lt;/p&gt;</description>
        </item>
                              <item>
          <title>Sniffeur d'ancre - Da Scritch</title>
          <link>https://dascritch.net/post/2014/06/24/Sniffeur-d-ancre#c11674</link>
          <guid isPermaLink="false">urn:md5:a6e18e0efe1eb297f926ab3b48bdf74a</guid>
          <pubDate>Mon, 04 Sep 2017 08:40:40 +0200</pubDate>
          <dc:creator>Da Scritch</dc:creator>
          <description>&lt;p&gt;Le module est passé en WebExtension . Merci Makyen &lt;a href=&quot;https://github.com/dascritch/anchors-reveal/issues/13&quot; title=&quot;https://github.com/dascritch/anchors-reveal/issues/13&quot; rel=&quot;ugc&quot;&gt;https://github.com/dascritch/anchor...&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;
Billet repassant l'histoire en détails : &lt;a href=&quot;https://dascritch.net/post/2017/09/04/Les-joies-de-la-communaut%C3%A9-open-source&quot; rel=&quot;ugc&quot;&gt;Les joies de la communauté open-source&lt;/a&gt;
&lt;/p&gt;</description>
        </item>
                              <item>
          <title>Firefox, l'invisible - Da Scritch</title>
          <link>https://dascritch.net/post/2017/01/12/Firefox%2C-l-invisible#c11667</link>
          <guid isPermaLink="false">urn:md5:432b9115754360fdfa6849ac210e3095</guid>
          <pubDate>Tue, 30 May 2017 10:31:29 +0200</pubDate>
          <dc:creator>Da Scritch</dc:creator>
          <description>&lt;p&gt;
Un excellent papier qui complète mon point de vue, sans se limiter aux conséquences pour un navigateur &lt;a href=&quot;https://www.stavros.io/posts/scourge-web-analytics/&quot; title=&quot;https://www.stavros.io/posts/scourge-web-analytics/&quot; rel=&quot;ugc&quot;&gt;https://www.stavros.io/posts/scourg...&lt;/a&gt;&lt;/p&gt;</description>
        </item>
                              <item>
          <title>Firefox, l'invisible - Da Scritch</title>
          <link>https://dascritch.net/post/2017/01/12/Firefox%2C-l-invisible#c11637</link>
          <guid isPermaLink="false">urn:md5:0ae156a96a702290a645f01e98d84ff4</guid>
          <pubDate>Thu, 12 Jan 2017 16:59:00 +0100</pubDate>
          <dc:creator>Da Scritch</dc:creator>
          <description>&lt;figure&gt;
&lt;a href=&quot;https://dascritch.net/vrac/.blog2/webdev/1701-FirefoxInvisible/1701-FirefoxInvisible-browsers-versions.jpg&quot; rel=&quot;ugc&quot;&gt;&lt;img src=&quot;https://dascritch.net/vrac/.blog2/webdev/1701-FirefoxInvisible/.1701-FirefoxInvisible-browsers-versions_m.jpg&quot; alt=&quot;&quot; /&gt;
&lt;/figure&gt;
&lt;p&gt;&lt;a href=&quot;https://twitter.com/kosamari/status/818969996663681026&quot;  rel=&quot;ugc&quot;&gt;Illustration de Mariko Kosaka&lt;/a&gt;&lt;/p&gt;</description>
        </item>
                              <item>
          <title>Firefox, l'invisible - gavrochelegnou</title>
          <link>https://dascritch.net/post/2017/01/12/Firefox%2C-l-invisible#c11635</link>
          <guid isPermaLink="false">urn:md5:289ac34541ea9c338d864e161a7ef208</guid>
          <pubDate>Thu, 12 Jan 2017 15:41:42 +0100</pubDate>
          <dc:creator>gavrochelegnou</dc:creator>
          <description>&lt;p&gt;Très bonne analyse.&lt;br /&gt;
Pour info une comparaison  sur un site large public le 6 janvier (jour pris au hasard mais significatif) avec  12289 pages vues et 5147 visiteurs (source GA) :&lt;br /&gt;
GoogleAnalytics :
&lt;/p&gt;
&lt;table&gt;
&lt;tr&gt;&lt;td&gt;1.	&lt;/td&gt;&lt;td&gt;Chrome&lt;/td&gt;&lt;td&gt;	2 213	&lt;/td&gt;&lt;td&gt;38,36 %&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;2.	&lt;/td&gt;&lt;td&gt;Firefox&lt;/td&gt;&lt;td&gt;	1 790	&lt;/td&gt;&lt;td&gt;31,03 %&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;3.	&lt;/td&gt;&lt;td&gt;Safari&lt;/td&gt;&lt;td&gt;	953	&lt;/td&gt;&lt;td&gt;16,52 %&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;4.	&lt;/td&gt;&lt;td&gt;Internet Explorer&lt;/td&gt;&lt;td&gt;	491	&lt;/td&gt;&lt;td&gt;8,51 %&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;5.	&lt;/td&gt;&lt;td&gt;Edge&lt;/td&gt;&lt;td&gt;	129	&lt;/td&gt;&lt;td&gt;2,24 %&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;
&lt;p&gt;
Log Apache (recherche sur le sous-dossier des css et js pour éliminer une bonne part des bots) :&lt;br /&gt;
cat www.access.log.2017-01-06 | grep &quot;GET /c/&quot; | wc -l&lt;br /&gt;
26773&lt;br /&gt;
cat www.access.log.2017-01-06 | grep &quot;GET /c/&quot; | grep Firefox | wc -l&lt;br /&gt;
9526 =&amp;gt; &lt;strong&gt;35.58%&lt;/strong&gt;&lt;br /&gt;
cat www.access.log.2017-01-06 | grep &quot;GET /c/&quot; | grep Chrome | wc -l&lt;br /&gt;
9475 =&amp;gt;&lt;strong&gt; 35.38%&lt;/strong&gt;&lt;/p&gt;


&lt;p&gt;Donc même si la gestion du cache peut influencer on a tout de même une remontée sensible de firefox.&lt;/p&gt;


&lt;p&gt;Sur le chargement d'une page &quot;importante&quot; du site on retrouve sensiblement le même écart, avec toujours firefox en tête :&lt;br /&gt;
cat www.access.log.2017-01-06 | grep &quot;GET /xyz/&quot; | wc -l&lt;br /&gt;
9495&lt;br /&gt;
cat www.access.log.2017-01-06 | grep &quot;GET /xyz/&quot; | grep Firefox |wc -l&lt;br /&gt;
2908 =&amp;gt; &lt;strong&gt;30.63%&lt;/strong&gt;&lt;br /&gt;
cat www.access.log.2017-01-06 | grep &quot;GET /xyz/&quot; | grep Chrome |wc -l&lt;br /&gt;
2759 =&amp;gt; &lt;strong&gt;29.06%&lt;/strong&gt;&lt;/p&gt;</description>
        </item>
                              <item>
          <title>Ressuscitez le bouton du milieu ! - Ohian</title>
          <link>https://dascritch.net/post/2016/12/06/Ressuscitez-le-bouton-du-milieu#c11630</link>
          <guid isPermaLink="false">urn:md5:c44f865402af62f7592b58746cb99f9c</guid>
          <pubDate>Fri, 30 Dec 2016 03:22:52 +0100</pubDate>
          <dc:creator>Ohian</dc:creator>
          <description>&lt;p&gt;C'est comme quand tu découvres une SUPEEER nouveauté qui te CHAAANGE la vie quand tu découvres une nouvelle fonction super pratique sur ton soft préféré!!!&lt;br /&gt;
Maintenant je ne ferai plus jamais clic droit + ouvrir gnagnagna&lt;br /&gt;
Merciiii \o/&lt;/p&gt;</description>
        </item>
                              <item>
          <title>Ressuscitez le bouton du milieu ! - Artusamak</title>
          <link>https://dascritch.net/post/2016/12/06/Ressuscitez-le-bouton-du-milieu#c11621</link>
          <guid isPermaLink="false">urn:md5:9d8b8c9446471f9a23b9a9cde155496f</guid>
          <pubDate>Thu, 08 Dec 2016 00:20:57 +0100</pubDate>
          <dc:creator>Artusamak</dc:creator>
          <description>&lt;p&gt;Merci pour ce billet, je ne suis pas le seul à râler contre Google qui sont les pires je trouve.&lt;br /&gt;
Le clic droit est aussi mal traité (pour inspecter un élément, pour copier le lien à partager, etc).&lt;br /&gt;
Et le pire c'est que dans Google Sheets ils t'interdisent même d'utiliser le menu Edition &amp;gt; Copier / Coller, ils t'obligent à utiliser un raccourci clavier !!! C'est plutôt grave, non ?&lt;/p&gt;


&lt;p&gt;Vive le clic du milieu libre !&lt;/p&gt;</description>
        </item>
                              <item>
          <title>Ressuscitez le bouton du milieu ! - Tim</title>
          <link>https://dascritch.net/post/2016/12/06/Ressuscitez-le-bouton-du-milieu#c11613</link>
          <guid isPermaLink="false">urn:md5:a71c67e94cb05c514265e23630ba9b5e</guid>
          <pubDate>Wed, 07 Dec 2016 00:53:07 +0100</pubDate>
          <dc:creator>Tim</dc:creator>
          <description>&lt;p&gt;Hello,&lt;/p&gt;


&lt;p&gt;Non, à mon sens, tu n'es pas seul, et non, à mon sens toujours - sur ce sujet précis - tu n'es pas un vieux croûton qui râle que c'était mieux avant.&lt;/p&gt;


&lt;p&gt;Je saisis l'opportunité d'aller - un peu - plus loin ici, suite à notre bref échange là:&lt;br /&gt;
&lt;a href=&quot;https://twitter.com/tpillard/status/806130791747092480&quot; title=&quot;https://twitter.com/tpillard/status/806130791747092480&quot; rel=&quot;ugc&quot;&gt;https://twitter.com/tpillard/status...&lt;/a&gt;&lt;/p&gt;


&lt;p&gt;Mes excuses, manquant de temps pour faire une réponse courte, j'en ai fait une longue, et un peu en vrac.&lt;/p&gt;


&lt;p&gt;Mon tweet contenant le bout de code suivant:&lt;/p&gt;


&lt;p&gt;```js
&lt;pre&gt;
function onClick(evt) {
    var tab = evt.ctrlKey || evt.metaKey || evt.which === 2 || evt.button === 1;
    if (!tab) {
       evt.preventDefault();
       // ... Some JavaScript
   }
}
&lt;/pre&gt;
```&lt;/p&gt;


&lt;p&gt;Pour être un peu plus exhaustif - A:&lt;/p&gt;


&lt;p&gt;```html&lt;pre&gt;
&amp;lt;a href=&quot;https://dascritch.net/post/2016/12/06/&lt;a href=&quot;https://dascritch.net/post/2016/12/06/Ressuscitez-le-bouton-du-milieu&quot; title=&quot;https://dascritch.net/post/2016/12/06/Ressuscitez-le-bouton-du-milieu&quot; rel=&quot;ugc&quot;&gt;https://dascritch.net/post/2016/12/...&lt;/a&gt;&quot; title=&quot;Je suis un lien intercepté avec JavaScript, mais je m'ouvre quand même dans un nouvel onglet si je devine que c'est ce que tu veux&quot; /&amp;gt;
&lt;/pre&gt;```&lt;/p&gt;


&lt;p&gt;```js&lt;pre&gt;
function onClick(evt) {
    var tab = evt.ctrlKey || evt.metaKey || evt.which === 2 || evt.button === 1;
    if (!tab) {
        evt.preventDefault();
        // ... Some JavaScript
    }
}
document.querySelector('a').addEventListener(onClick, false);
&lt;/pre&gt;```&lt;/p&gt;


&lt;p&gt;Un gestionnaire d’évènement `click en JavaScript, sur un lien, mais que l'on peut ouvrir dans un nouvel onglet grâce à une combinaison de touches du clavier (CTRL + click / POMME(heu, META) + clic) ou boutons de la souris (bouton du milieu).&lt;br /&gt;
Bien qu'il soit imparfait - il y a des cas que ce bout de code va louper - ce bout de code en couvre, je pense, la majeure partie.&lt;br /&gt;
Il m'est arrivé d'utiliser un tel mécanisme au sein de divers sites et application webs tirant profit de JavaScript, en VanillaJS, jQuery, Backbone, React, whatever blah.&lt;/p&gt;


&lt;p&gt;C'est d'ailleurs le même mécanisme qu'on retrouve dans React Router et probablement bien d'autres:&lt;br /&gt;
&lt;a href=&quot;https://github.com/ReactTraining/react-router/blob/e06190e06a7cebcced96aa708be83174176186a0/modules/Link.js#L8-L14&quot; title=&quot;https://github.com/ReactTraining/react-router/blob/e06190e06a7cebcced96aa708be83174176186a0/modules/Link.js#L8-L14&quot; rel=&quot;ugc&quot;&gt;https://github.com/ReactTraining/re...&lt;/a&gt;&lt;/p&gt;


&lt;p&gt;Sur Twitter, notre cher défenseur du bouton du milieu, pointe que cette solution:&lt;br /&gt;
- est peu standard (en fait il n'y a que evt.which qui ne soit pas standard, on doit pouvoir s'en passer)&lt;br /&gt;
- est un peu compliquée / intrusive / peu fiable&lt;br /&gt;
&lt;a href=&quot;https://twitter.com/dascritch/status/806131034018484224&quot; title=&quot;https://twitter.com/dascritch/status/806131034018484224&quot; rel=&quot;ugc&quot;&gt;https://twitter.com/dascritch/statu...&lt;/a&gt;&lt;br /&gt;
Aussi, elle va un peu à l'encontre de la moralité donnée en fin de l'article:&lt;br /&gt;
&amp;gt; Moralité : Laissez le navigateur fonctionner, ne tentez pas de recréer la roue&lt;/p&gt;


&lt;p&gt;En proposant une solution alternative - B:&lt;/p&gt;


&lt;p&gt;```html&lt;pre&gt;
&amp;lt;a href=&quot;https://dascritch.net/post/2016/12/06/&lt;a href=&quot;https://dascritch.net/post/2016/12/06/Ressuscitez-le-bouton-du-milieu#du_web_document_au_web_applicatif&quot; title=&quot;https://dascritch.net/post/2016/12/06/Ressuscitez-le-bouton-du-milieu#du_web_document_au_web_applicatif&quot; rel=&quot;ugc&quot;&gt;https://dascritch.net/post/2016/12/...&lt;/a&gt;&quot; title=&quot;Je suis pas un lien intercepté avec JavaScript, mais je peux quand même exécuter du code quand tu me navigues&quot; /&amp;gt;
&lt;/pre&gt;
```&lt;/p&gt;


&lt;p&gt;```js&lt;pre&gt;
function onHashChange(evt) {&lt;br /&gt;
    // ... Some JavaScript - evt.oldURL - evt.newURL&lt;br /&gt;
}&lt;br /&gt;
window.addEventListener('hashchange', onHashChange, false);&lt;/pre&gt;```&lt;/p&gt;


&lt;p&gt;En vrai, je trouve que c'est une approche intéressante, et à priori moins intrusive et plus fiable que ma version du gestionnaire d’évènement `click`, mais je ne suis pas tout à fait convaincu:&lt;/p&gt;


&lt;p&gt;- Ok, cela m'a étonné mais le support des navigateurs pour l'évenèment onhashchange est plutôt pas mal:&lt;br /&gt;
&lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/Events/hashchange&quot; title=&quot;https://developer.mozilla.org/en-US/docs/Web/Events/hashchange&quot; rel=&quot;ugc&quot;&gt;https://developer.mozilla.org/en-US...&lt;/a&gt;&lt;/p&gt;


&lt;p&gt;- evt.target === window, c'est une approche globale, et non locale, bon courage pour savoir sur quel lien en particulier l'utilisateur vient de cliquer&lt;br /&gt;
document.querySelectorAll('a[href=&quot;https://dascritch.net/post/2016/12/06/'+ evt.newURL +'&quot;]');&lt;/p&gt;


&lt;p&gt;- ne fonctionne pour les liens &quot;pushstate&quot;?&lt;br /&gt;
Vous savez, ceux tout jolis (et universal-rendering/URL/etc friendly) sans `#` dedans là&lt;/p&gt;


&lt;p&gt;Néanmoins, je tenterai, dans le futur, si j'ai un projet qui correspond.&lt;/p&gt;


&lt;p&gt;Dans les deux cas, A et B, on a affaire à une approche, peut-être un peu naïve, de deux développeurs web, qui éssaient de concilier&lt;br /&gt;
le développement d'applications JavaScript, les principes du document web et les habitudes de navigation des internautes.&lt;br /&gt;
Et on est pas les seuls, on retrouve cette problématique dans la plupart des projets web, mais les outils à notre disposition sont pas toujours aussi aidant qu'on les aimeraient:&lt;/p&gt;


&lt;p&gt;- MouseEvent.which n'est pas standard, et utilise le code `2` pour le bouton du milieu&lt;br /&gt;
&lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/which&quot; title=&quot;https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/which&quot; rel=&quot;ugc&quot;&gt;https://developer.mozilla.org/en-US...&lt;/a&gt;&lt;/p&gt;


&lt;p&gt;- MouseEvent.button, lui est standard, et utilise le code `1` pour le bouton du milieu&lt;br /&gt;
&lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/button&quot; title=&quot;https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/button&quot; rel=&quot;ugc&quot;&gt;https://developer.mozilla.org/en-US...&lt;/a&gt;&lt;/p&gt;


&lt;p&gt;- MouseEvent.buttons, lui est standard, et utilise le code `4` pour le bouton du milieu, et les valeurs sont combinées en une lorsque plusieurs boutons sont préssés en même temps&lt;br /&gt;
&lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/buttons&quot; title=&quot;https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/buttons&quot; rel=&quot;ugc&quot;&gt;https://developer.mozilla.org/en-US...&lt;/a&gt;&lt;/p&gt;


&lt;p&gt;- MouseEvent.[altKey, shiftKey, ctrlKey]&lt;br /&gt;
&lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent&quot; title=&quot;https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent&quot; rel=&quot;ugc&quot;&gt;https://developer.mozilla.org/en-US...&lt;/a&gt;&lt;/p&gt;


&lt;p&gt;- L'utilisation de l'évènement onhashchange présente les limitations données plus haut&lt;/p&gt;


&lt;p&gt;Naïvement, je me dis que ce serait pas mal que le navigateur nous donne plus d'informations sur le comportement par défaut de l'évènement, les développeurs auraient moins à être créatifs pour résoudre ce genre de problématique?&lt;/p&gt;


&lt;p&gt;Et encore, notre fervent défenseur du bouton du milieu et moi sommes de plutôt bon élèves, on utilise des liens,&lt;br /&gt;
et on pense à l'utilisateur qui n'a pas JavaScript d'activé; que ce soit pour le SEO, l'accessibilité, l'utilisabilité, les performances perçues, etc.&lt;/p&gt;


&lt;p&gt;Tout ça pour dire que, à mon avis, non le bouton du milieu n'est pas un soucis de vieux routard du web, et dans la même veine,&lt;br /&gt;
on a par exemple le faux formulaire qui ne se soumet qu'au clic sur un bouton ou au blur d'un champ, alors qu'un &quot;vrai&quot; formulaire fonctionnerait très bien, même si la soumission ne fonctionne que grâce à JavaScript.&lt;/p&gt;


&lt;p&gt;P.S un peu corporate: sur les nouvelles (oui, bientôt) interfaces web de gestion de VMs GANDI, le clic milieu sur les liens fonctionne, et si c'est pas le cas, vous savez sur qui taper sur Twitter.&lt;br /&gt;
Je vous promets pas que vous pourrez (tout de suite) acheter vos domaines, configurer vos DNS, créer des boîtes mails ou ajouter de la RAM à votre VM depuis l'interface web sans JavaScript d'activé.&lt;br /&gt;
En attendant, vous pouvez toujours me taper dessus sur Twitter.&lt;br /&gt;
Sinon, il y a le GANDI CLI: &lt;a href=&quot;https://github.com/Gandi/gandi.cli&quot; title=&quot;https://github.com/Gandi/gandi.cli&quot; rel=&quot;ugc&quot;&gt;https://github.com/Gandi/gandi.cli&lt;/a&gt;&lt;/p&gt;


&lt;p&gt;Chouette article, chouette #Nowwwel :)&lt;/p&gt;</description>
        </item>
                              <item>
          <title>RIP URL URI, IRI INRI W3C - Da Scritch</title>
          <link>https://dascritch.net/post/2007/09/17/RIP-URL-URI-IRI-INRI-W3C#c11579</link>
          <guid isPermaLink="false">urn:md5:c2b1877962fa5652f7b669d72a2dba2e</guid>
          <pubDate>Tue, 19 Jul 2016 07:44:25 +0200</pubDate>
          <dc:creator>Da Scritch</dc:creator>
          <description>&lt;p&gt;L'histoire de l'URL, passionnant, forcément. &lt;a href=&quot;https://eager.io/blog/the-history-of-the-url-path-fragment-query-auth/?h&quot; title=&quot;https://eager.io/blog/the-history-of-the-url-path-fragment-query-auth/?h&quot; rel=&quot;ugc&quot;&gt;https://eager.io/blog/the-history-o...&lt;/a&gt;&lt;/p&gt;</description>
        </item>
                              <item>
          <title>Le retour des boutons de partage - Da Scritch</title>
          <link>https://dascritch.net/post/2014/02/25/Le-retour-des-boutons-de-partage#c11377</link>
          <guid isPermaLink="false">urn:md5:c90ae8bf424d010a950a9544d5326281</guid>
          <pubDate>Sun, 01 Feb 2015 16:52:35 +0100</pubDate>
          <dc:creator>Da Scritch</dc:creator>
          <description>&lt;p&gt;Théoriquement, ce sont des marques, mais rien ne vous empêche de les reprendre puisque vous vous en servez pour communiquer vers leurs sites.&lt;/p&gt;</description>
        </item>
                              <item>
          <title>Le retour des boutons de partage - fran6t</title>
          <link>https://dascritch.net/post/2014/02/25/Le-retour-des-boutons-de-partage#c11374</link>
          <guid isPermaLink="false">urn:md5:b0c73be6238e09733482a66342cb7535</guid>
          <pubDate>Sun, 01 Feb 2015 11:10:37 +0100</pubDate>
          <dc:creator>fran6t</dc:creator>
          <description>&lt;p&gt;Bravo, entierement d'accord avec l'ensemble du billet, c'est du bon sens. Une petite question les pictos peuvent-ils être repris ?&lt;/p&gt;</description>
        </item>
                              <item>
          <title>Ressources en ‹img /› - Da Scritch</title>
          <link>https://dascritch.net/post/2014/04/29/Ressources-en-img#c11309</link>
          <guid isPermaLink="false">urn:md5:d650f5e56b4aadacaf98f10c2de48de7</guid>
          <pubDate>Mon, 05 Jan 2015 18:41:57 +0100</pubDate>
          <dc:creator>Da Scritch</dc:creator>
          <description>&lt;p&gt;Petits ajouts :&lt;/p&gt;


&lt;p&gt;1 - il existe un mode lossy en png, et qui se montre plutôt efficace dans certaines conditions, capable de garder un texte particulièrement net ! &lt;a href=&quot;http://pngmini.com/lossypng.html&quot; title=&quot;http://pngmini.com/lossypng.html&quot; rel=&quot;ugc&quot;&gt;http://pngmini.com/lossypng.html&lt;/a&gt; L'astuce consiste à “oublier” les dernières passes de pixels, le logiciel interpole alors la définition manquante.&lt;/p&gt;


&lt;p&gt;2 - MozJPEG 3.0 &lt;a href=&quot;http://calendar.perfplanet.com/2014/mozjpeg-3-0/&quot; title=&quot;http://calendar.perfplanet.com/2014/mozjpeg-3-0/&quot; rel=&quot;ugc&quot;&gt;http://calendar.perfplanet.com/2014...&lt;/a&gt; est un encodeur jpeg complètement revu par la Mozilla Foundation, compatible avec tout décodeur. Il se trouve que les performances offertes sont particulièrement intéressantes et relance fortement l'intérêt sur ce format, face à JPEG 2000, JPEG XR et WebP dont le support reste anecdotique. C'est une astuce équivalente au mp3 variable bitrate, et au logiciel JpegMini dont j'avais parlé ici &lt;a href=&quot;http://dascritch.net/post/2012/01/24/Pour-une-compression-mieux-g%C3%A9r%C3%A9e&quot; title=&quot;http://dascritch.net/post/2012/01/24/Pour-une-compression-mieux-g%C3%A9r%C3%A9e&quot; rel=&quot;ugc&quot;&gt;http://dascritch.net/post/2012/01/2...&lt;/a&gt; . Sauf que la licence est intégralement libre.&lt;/p&gt;


&lt;p&gt;Bref, on a pas fini d'être surpris&lt;/p&gt;</description>
        </item>
            </channel>
</rss>
