Event basics

Can add event listeners to EventTarget instances, including Nodes, Windows, XMLHttpRequests.
      function myListener(event) {
        window.removeEventListener("load", myListener, false);
      }
      window.addEventListener("load", myListener, false);
    
Events are handled in four phases: capturing, at-target, bubbling, default action. The target property is where the event was dispatched; the currentTarget is where it's being handled right now.
Caveat: Whenever you use an input event (mouse, keyboard, etc) for your purposes, remember to call the preventDefault() method of the event object!
      window.addEventListener("keypress", function(event) {
          if (event.charCode == "x") {
            /* do something with it */
            event.preventDefault();
          }
        }, false);