<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet title="XSL formatting" type="text/xsl" href="http://blog.britoweb.net/feed/rss2/xslt" ?><rss version="2.0"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:wfw="http://wellformedweb.org/CommentAPI/"
  xmlns:content="http://purl.org/rss/1.0/modules/content/"
  xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
  <title>Blog - Britoweb - Tag - bonnes pratiques codage</title>
  <link>http://blog.britoweb.net/</link>
  <atom:link href="http://blog.britoweb.net/feed/tag/bonnes%20pratiques%20codage/rss2" rel="self" type="application/rss+xml"/>
  <description>Le Web à la sauce standard</description>
  <language>fr</language>
  <pubDate>Wed, 28 Jul 2010 16:01:30 +0200</pubDate>
  <copyright>Billets sous licence Creative Commons BY-NC-SA</copyright>
  <docs>http://blogs.law.harvard.edu/tech/rss</docs>
  <generator>Dotclear</generator>
  
    
  <item>
    <title>Ce n'est pas bien de mêler code HTML, CSS et JavaScript !</title>
    <link>http://blog.britoweb.net/post/2008/11/24/Ce-n-est-pas-bien-de-meler-code-HTML-CSS-et-JavaScript</link>
    <guid isPermaLink="false">urn:md5:c2acd98a2570b5d693d500595fffe77e</guid>
    <pubDate>Mon, 24 Nov 2008 13:17:00 +0100</pubDate>
    <dc:creator>Victor Brito</dc:creator>
        <category>bonnes pratiques codage</category><category>css</category><category>dom</category><category>html</category><category>javascript</category>    
    <description>&lt;p&gt;Bruno Bichet a publié hier sur son &lt;a href=&quot;http://www.css4design.com&quot; title=&quot;CSS4design, le blog de Bruno Bichet sur l'intégration Web&quot;&gt;blog&lt;/a&gt; un &lt;a href=&quot;http://www.css4design.com/blog/le-code-css-et-javascript-inline-saimal&quot; title=&quot;Billet de Bruno Bichet sur les raisons de ne pas insérer des CSS et du JavaScript dans le code HTML&quot;&gt;billet&lt;/a&gt; expliquant pourquoi ce n'est pas une bonne pratique que de mélanger le code HTML, les CSS (à coup d'attributs &lt;code xml:lang=&quot;en&quot; lang=&quot;en&quot;&gt;style&lt;/code&gt;) et le JavaScript (à coups d'attributs d'événements de type &lt;code&gt;&lt;span xml:lang=&quot;en&quot; lang=&quot;en&quot;&gt;on&lt;/span&gt;&lt;var&gt;nom de l'événement&lt;/var&gt;&lt;/code&gt;). Il s'agit d'une traduction (Bruno Bichet parle de &lt;q cite=&quot;http://www.css4design.com/blog/le-code-css-et-javascript-inline-saimal&quot;&gt;craduction&lt;/q&gt; &lt;img src=&quot;http://blog.britoweb.net/themes/normal-marron/smilies/wink.png&quot; alt=&quot;;)&quot; class=&quot;smiley&quot; /&gt; ) d'un &lt;a href=&quot;http://www.robertnyman.com/2008/11/20/why-inline-css-and-javascript-code-is-such-a-bad-thing/&quot; hreflang=&quot;en&quot; title=&quot;Billet de Robert Nyman expliquant pourquoi il est mauvais d'insérer les CSS et le JavaScript en plein code HTML&quot;&gt;billet de Robert Nyman, en anglais, à ce sujet&lt;/a&gt;.&lt;/p&gt;    &lt;p&gt;Dans l'ensemble, il n'y a rien à ajouter aux explications de Bruno Bichet, explications qui se doublent d'une démonstration de ce qu'il faut faire si l'on se soucie de &lt;strong&gt;bonnes pratiques de codage en CSS et en JavaScript&lt;/strong&gt;&amp;nbsp;: autrement dit, il faut &lt;strong&gt;séparer&lt;/strong&gt; le contenu (et la structure, de préférence conforme au balisage sémantique, de ce contenu) de sa présentation et des comportements dynamiques qui s'y appliquent. N'oublions pas que c'est pour tendre à cet objectif de séparation que les feuilles de styles sont apparues (pour rappel, il y a bientôt douze ans&amp;nbsp;!) et qu'on a mis au point le concept d'&lt;em xml:lang=&quot;en&quot; lang=&quot;en&quot;&gt;unobstrusive JavaScript&lt;/em&gt; (en bon français, le &lt;em&gt;JavaScript non intrusif&lt;/em&gt;).&lt;/p&gt;
&lt;p&gt;D'ailleurs, à propos de JavaScript, j'ai une remarque à faire concernant la gestion des événements et la résolution des conflits éventuels entre plusieurs gestionnaires d'événement. Il n'est pas nécessaire de recourir à une bibliothèque JavaScript pour faire cohabiter pacifiquement plusieurs gestionnaires d'événements&amp;nbsp;: en effet, la &lt;a href=&quot;http://www.w3.org/TR/DOM-Level-2-Events/&quot; hreflang=&quot;en&quot;&gt;spécification &lt;acronym title=&quot;Document Object Model&quot;&gt;DOM&lt;/acronym&gt; niveau 2 événements du &lt;acronym title=&quot;World Wide Web Consortium&quot;&gt;W3C&lt;/acronym&gt;&lt;/a&gt; a de quoi suffire, ainsi que la gestion des événements propre à Internet Explorer.&lt;/p&gt;
&lt;pre xml:lang=&quot;en&quot; lang=&quot;en&quot;&gt;function fnAjaxNews ()
{
  // Get news through &lt;acronym title=&quot;Asynchronous JavaScript and XML&quot;&gt;Ajax&lt;/acronym&gt;
}

function fnGetNews ()
{
  var oGetNews = document.getElementById ('get-news');
  // For standards-compliant browsers
  if (oGetNews.addEventListener) oGetNews.addEventListener ('click', fnAjaxNews, false);
  // For Internet Explorer
  else if (oGetNews.attachEvent) oGetNews.attachEvent ('onclick', fnAjaxNews);
  // For browsers who do not understand DOM level 2, there is no event
  else return;
}

// Let us load the function above
function fnLoad ()
{
  // For standards-compliant browsers
  if (window.addEventListener) window.addEventListener ('load', fnGetNews, false);
  // For Internet Explorer
  else if (window.attachEvent) window.attachEvent ('onload', fnGetNews);
  // For browsers who do not understand DOM level 2, there is no event
  // (which means these browsers will behave as though JavaScript were deactivated or not supported)
  else return;
}
// Execute
fnLoad ();&lt;/pre&gt;
&lt;p&gt;Sans doute y a-t-il plus de code à pondre que si l'on utilisait une bibliothèque JavaScript&amp;nbsp;; mais, ce bout de code a l'avantage d'éviter les conflits (d'autres fichiers JavaScript pourront être appelés qui gèrent les événements de la sorte) et de ne pas servir de JavaScript (c'est un choix) aux navigateurs incapables d'implémenter l'une des deux méthodes d'ajout d'événement (que ce soit la méthode standard ou la méthode propriétaire d'&lt;abbr title=&quot;Internet Explorer&quot;&gt;IE&lt;/abbr&gt;)&amp;nbsp;: pour ces derniers, il y aura donc une &lt;em&gt;dégradation élégante&lt;/em&gt;, qui ne sera pas gênante, pourvu que le contenu soit parfaitement accessible sans JavaScript.&lt;/p&gt;</description>
    
    
    
      </item>
    
</channel>
</rss>