| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 | <!DOCTYPE html><html><head>  <title>Use event.firstTarget</title>  <script src="../node_modules/hammerjs/hammer.js"></script>  <script src="../propagating.js"></script>  <style>    div     {border: 1px solid black;}    #parent {width: 600px; height: 400px; background: lightgreen;}    #child  {width: 400px; height: 200px; background: yellow; margin: 10px;}  </style></head><body><p>  Pan the child element, and check out <code>event.target</code> and <code>event.firstTarget</code>.</p><ul>  <li id="firstTarget">First target:</li>  <li id="target">Target:</li></ul><div id="parent">  parent  <div id="child">    child  </div></div><script>  // replace the global Hammer constructor with a propagated one, such that  // hammer.js instances automatically have event propagation.  Hammer = propagating(Hammer, {    preventDefault: true  });  var parent = document.getElementById('parent');  var hammer1 = new Hammer(parent)      .on('pan', function (event) {        console.log('pan on parent', event);      });  var child = document.getElementById('child');  var hammer2 = new Hammer(child)      .on('pan', function (event) {        console.log('pan on child', event);        document.getElementById('firstTarget').innerHTML = 'First target: ' + event.firstTarget.id;        document.getElementById('target').innerHTML = 'Target: ' + event.target.id;      })      .on('panstart', function (event) {        console.log('panstart on child', event);      })      .on('panend', function (event) {        console.log('panend on child', event);      });</script></body></html>
 |