| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121 | <!DOCTYPE html><html><head>  <title>Extensive usage example</title>  <script src="../node_modules/hammerjs/hammer.js"></script>  <script src="../propagating.js"></script>  <style>    #parent {      width: 600px;      height: 500px;      background: lightyellow;      border: 1px solid orange;    }    #child1,    #child2 {      width: 400px;      height: 200px;      background: lightgreen;      border: 1px solid green;      margin: 10px;    }    #grandchild1,    #grandchild2 {      width: 200px;      height: 100px;      background: lightblue;      border: 1px solid blue;      margin: 10px;    }  </style></head><body><p>Extend hammer.js with event propagation.</p><ul>  <li>Tapping or panning <code>grandchild1</code> will propagate to <code>child1</code> and then <code>parent1</code>.</li>  <li>Tapping or panning <code>grandchild2</code> will propagate to <code>child2</code>, which stops propagation and does not reach <code>parent</code>.</li></ul><p>See output in the developer console, check the order of events.</p><div id="parent">  parent  <div id="child1">    child1    <div id="grandchild1">      grandchild1    </div>  </div>  <div id="child2">    child2 (stops propagation)    <div id="grandchild2">      grandchild2    </div>  </div></div><script>  var parent = document.getElementById('parent');  var child1 = document.getElementById('child1');  var child2 = document.getElementById('child2');  var grandchild1 = document.getElementById('grandchild1');  var grandchild2 = document.getElementById('grandchild2');  var hammers = {};  hammers['parent'] = propagating(new Hammer(parent))      .on('tap', function (event) {        console.log('tap parent');      })      .on('pan', function (event) {        console.log('pan parent');      });  hammers['child1'] = propagating(new Hammer(child1))      .on('tap', function (event) {        console.log('tap child1');      })      .on('pan', function (event) {        console.log('pan child1');      });  hammers['grandchild1'] = propagating(new Hammer(grandchild1))      .on('tap', function (event) {        console.log('tap grandchild1');      })      .on('pan', function (event) {        console.log('pan grandchild1')      });  hammers['child2'] = propagating(new Hammer(child2))      .on('tap', function (event) {        console.log('tap child2');        event.stopPropagation();      })      .on('pan', function (event) {        console.log('pan child2');        event.stopPropagation();      });  hammers['grandchild2'] = propagating(new Hammer(grandchild2))      .on('tap', function (event) {        console.log('tap grandchild2');      })      .on('pan', function (event) {        console.log('pan grandchild2');      });//  hammerParent.on('hammer.input', function (event) {//        console.log('hammer.input', event);//      });  function destroy() {    Object.keys(hammers).forEach(function (name) {      hammers[name].destroy();    });    hammers = [];  }</script></body></html>
 |