The Lodge is members-only design/dev videos and Office Hours.

Next Office Hours Session: "Implementing an SVG Icon System" Nov 30 - 6:00 PM Eastern

Modern Event Handling

Last updated on:
<script type="text/javascript">
 * Attach an event handler on a given Node taking care of Browsers Differences
 * @param {Object} node
 * @param {String} type
 * @param {Function} fn
 * @param {Boolean} capture
function addEventHandler(node,type,fn , capture){
       if(typeof window.event !== "undefined"){
                /* Internet Explorer way */
               node.attachEvent( "on" + type, fn );
       } else {
               /* FF & Other Browsers */
               node.addEventListener( type, fn , capture );

/* Example */
   alert("The page was loaded");

This is better than doing the traditional "window.onload" event, as it can attach multiple event handlers to a single event and they all get called.


  1. Ryan
    Permalink to comment#

    This has be known to be a flaky way of encasulating event handling into a function. attachEvent & addEventListener do not work the same way and will cause issues, see here for good explanation

  2. David Walker
    Permalink to comment#

    Ryan is right, this can be flaky and should only be used when you are not going to hit other event issues such as key presses. Else the if should be reversed so the W3C approach comes first. Else when you hit IE9+ which do event handling correctly you force IE into the legacy approach.

Leave a Comment

Posting Code

We highly encourage you to post problematic HTML/CSS/JavaScript over on CodePen and include the link in your post. It's much easier to see, understand, and help with when you do that.

Markdown is supported, so you can write inline code like `<div>this</div>` or multiline blocks of code in in triple backtick fences like this:

  function example() {
    element.innerHTML = "<div>code</div>";

There's a whole bunch of content on CSS-Tricks.

Search for Stuff   •   Browse the Archives

Get the Newsletter ... or get the RSS feed