{"id":1259,"date":"2014-09-01T17:46:02","date_gmt":"2014-09-01T15:46:02","guid":{"rendered":"http:\/\/blog.devportfolio.net\/?p=1259"},"modified":"2020-08-14T23:15:39","modified_gmt":"2020-08-14T21:15:39","slug":"methode-addevent-en-vanilla-javascript","status":"publish","type":"post","link":"https:\/\/devportfolio.net\/wp-dev-blog\/methode-addevent-en-vanilla-javascript\/","title":{"rendered":"M\u00e9thode addEvent en vanilla javascript"},"content":{"rendered":"<p>La m\u00e9thode addEvent suivante est une fa\u00e7ade basique permettant d&rsquo;ajouter des listeners sur les \u00e9l\u00e9ments du DOM. La m\u00e9thode addEvent permet d&rsquo;attacher un \u00e9v\u00e8nement sur plusieurs \u00e9l\u00e8ments en une instruction.<\/p>\n<p>addEvent est compatible avec Internet Explorer IE8+, Chrome et Firefox. Cette m\u00e9thode peut \u00eatre utilis\u00e9e sur un nombre limit\u00e9 d\u2019\u00e9l\u00e9ments pour \u00e9viter des probl\u00e8mes de performances sur la page. Pour cibler un nombre important d&rsquo;\u00e9l\u00e9ment il est conseill\u00e9 d&rsquo;utiliser <a href=\"http:\/\/davidwalsh.name\/event-delegate\" target=\"_blank\" rel=\"noopener noreferrer\">la d\u00e9l\u00e9gation d\u2019\u00e9v\u00e9nement<\/a>. Personnellement j&rsquo;utilise la libraire <a href=\"http:\/\/craig.is\/riding\/gators\" target=\"_blank\" rel=\"noopener noreferrer\">Gator.js<\/a>\u00a0pour g\u00e9rer les \u00e9v\u00e9nements en vanilla js.<\/p>\n<p><span style=\"text-decoration: underline;\">Exemple d&rsquo;utilisation :<\/span><\/p>\n<pre class=\"lang:xhtml mark:32,33,34,35 decode:true\" title=\"Code HTML, CSS et JavaScript\">&lt;!DOCTYPE html&gt;\n&lt;head&gt;\n\t&lt;meta charset=\"utf-8\"&gt;\n\t&lt;meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge,chrome=1\"&gt;\n\t&lt;title&gt;Lab&lt;\/title&gt;        \n\t&lt;meta name=\"viewport\" content=\"width=device-width\"&gt;        \n\t&lt;style&gt;\n\thtml {\n\t\tpadding: 1em;\n\t}\n\tdiv {\n\t\tbackground: cyan;\n\t\twidth: 20%;\n\t\tmargin: 1em;\n\t\tpadding: 1em;\n\t\tcursor: pointer;\n\t}\n\t&lt;\/style&gt;\n&lt;\/head&gt;\n&lt;body&gt;\n\n\t&lt;div&gt;div 1&lt;\/div&gt;\n\t&lt;div&gt;div 2&lt;\/div&gt;\n\t&lt;div&gt;div 3&lt;\/div&gt;\n\t\n\t&lt;script src=\"js\/event.js\"&gt;&lt;\/script&gt;\n\t&lt;script&gt;\n\t(function() {\n\n\t\tvar divlist = document.querySelectorAll( 'div' );\n\t\t\n\t\tdivlist.addEvent( 'click', function( e ) {\n\t\t\t\n\t\t\tconsole.log( e );\n\t\t});\n\t\t\n\t}());\n\t&lt;\/script&gt;\n&lt;\/body&gt;\n&lt;\/html&gt;<\/pre>\n<pre class=\"lang:js decode:true\">\/*------------------------------------------------------------------------------\n * JavaScript addEvent method :\t\n *\n * this method is a basic facade that allows you to use a simplified method \n * of adding event listeners to DOM nodes.  \n *-----------------------------------------------------------------------------*\/  \n(function() {\n\n\t\/**\n\t* Extend DOM Element with addEvent.\t\t\n\t*\/\n\tElement.prototype.addEvent = (function() {\n\n\t\tif ( this.addEventListener ) {\n\n\t\t\treturn function( eventName, eventHandler ) {\t\t\t\t\n\t\t\t\tthis.addEventListener( eventName, eventHandler, true );\n\t\t\t};\n\t\t}\n\t\telse if ( this.attachEvent ) {\t\/\/IE\n\n\t\t\treturn function( eventName, eventHandler ) {\t\t\t\t\t\t\t\n\t\t\t\tthis.attachEvent( 'on' + eventName, eventHandler );\n\t\t\t};\n\t\t}\n\t\t\n\t})();\n\t\t\n\tif( window['StaticNodeList'] ) {\t\/\/IE\t\n\t\t\n\t\tStaticNodeList.prototype.addEvent = function( eventName, eventHandler ) {\n\n\t\t\tvar nodeList = this;\n\n\t\t\tfor ( var i = 0, count = nodeList.length; i &lt; count; ++i ) {\n\t\t\t\n\t\t\t\tnodeList[ i ].addEvent( eventName, eventHandler );\n\t\t\t}\n\t\t};\n\t}\n\t\n\telse if( window['NodeList'] ) {\t\t\n\t\t\t\t\n\t\tNodeList.prototype.addEvent = function( eventName, eventHandler ) {\n\n\t\t\tvar nodeList = this;\n\n\t\t\tfor ( var i = 0, count = nodeList.length; i &lt; count; ++i ) {\n\t\t\t\n\t\t\t\tnodeList[ i ].addEvent( eventName, eventHandler );\n\t\t\t}\n\t\t};\n\t}\t\n}());<\/pre>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>La m\u00e9thode addEvent suivante est une fa\u00e7ade basique permettant d&rsquo;ajouter des listeners sur les \u00e9l\u00e9ments du DOM. La m\u00e9thode addEvent permet d&rsquo;attacher un \u00e9v\u00e8nement sur plusieurs \u00e9l\u00e8ments en une instruction. addEvent est compatible avec Internet Explorer IE8+, Chrome et Firefox. Cette m\u00e9thode peut \u00eatre utilis\u00e9e sur un nombre limit\u00e9 d\u2019\u00e9l\u00e9ments pour \u00e9viter des probl\u00e8mes de [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[18],"tags":[],"class_list":["post-1259","post","type-post","status-publish","format-standard","hentry","category-javascript-2"],"_links":{"self":[{"href":"https:\/\/devportfolio.net\/wp-dev-blog\/wp-json\/wp\/v2\/posts\/1259","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devportfolio.net\/wp-dev-blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devportfolio.net\/wp-dev-blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devportfolio.net\/wp-dev-blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/devportfolio.net\/wp-dev-blog\/wp-json\/wp\/v2\/comments?post=1259"}],"version-history":[{"count":1,"href":"https:\/\/devportfolio.net\/wp-dev-blog\/wp-json\/wp\/v2\/posts\/1259\/revisions"}],"predecessor-version":[{"id":2460,"href":"https:\/\/devportfolio.net\/wp-dev-blog\/wp-json\/wp\/v2\/posts\/1259\/revisions\/2460"}],"wp:attachment":[{"href":"https:\/\/devportfolio.net\/wp-dev-blog\/wp-json\/wp\/v2\/media?parent=1259"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devportfolio.net\/wp-dev-blog\/wp-json\/wp\/v2\/categories?post=1259"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devportfolio.net\/wp-dev-blog\/wp-json\/wp\/v2\/tags?post=1259"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}