extensive.html 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <title>Extensive usage example</title>
  5. <script src="../node_modules/hammerjs/hammer.js"></script>
  6. <script src="../propagating.js"></script>
  7. <style>
  8. #parent {
  9. width: 600px;
  10. height: 500px;
  11. background: lightyellow;
  12. border: 1px solid orange;
  13. }
  14. #child1,
  15. #child2 {
  16. width: 400px;
  17. height: 200px;
  18. background: lightgreen;
  19. border: 1px solid green;
  20. margin: 10px;
  21. }
  22. #grandchild1,
  23. #grandchild2 {
  24. width: 200px;
  25. height: 100px;
  26. background: lightblue;
  27. border: 1px solid blue;
  28. margin: 10px;
  29. }
  30. </style>
  31. </head>
  32. <body>
  33. <p>Extend hammer.js with event propagation.</p>
  34. <ul>
  35. <li>Tapping or panning <code>grandchild1</code> will propagate to <code>child1</code> and then <code>parent1</code>.</li>
  36. <li>Tapping or panning <code>grandchild2</code> will propagate to <code>child2</code>, which stops propagation and does not reach <code>parent</code>.</li>
  37. </ul>
  38. <p>See output in the developer console, check the order of events.</p>
  39. <div id="parent">
  40. parent
  41. <div id="child1">
  42. child1
  43. <div id="grandchild1">
  44. grandchild1
  45. </div>
  46. </div>
  47. <div id="child2">
  48. child2 (stops propagation)
  49. <div id="grandchild2">
  50. grandchild2
  51. </div>
  52. </div>
  53. </div>
  54. <script>
  55. var parent = document.getElementById('parent');
  56. var child1 = document.getElementById('child1');
  57. var child2 = document.getElementById('child2');
  58. var grandchild1 = document.getElementById('grandchild1');
  59. var grandchild2 = document.getElementById('grandchild2');
  60. var hammers = {};
  61. hammers['parent'] = propagating(new Hammer(parent))
  62. .on('tap', function (event) {
  63. console.log('tap parent');
  64. })
  65. .on('pan', function (event) {
  66. console.log('pan parent');
  67. });
  68. hammers['child1'] = propagating(new Hammer(child1))
  69. .on('tap', function (event) {
  70. console.log('tap child1');
  71. })
  72. .on('pan', function (event) {
  73. console.log('pan child1');
  74. });
  75. hammers['grandchild1'] = propagating(new Hammer(grandchild1))
  76. .on('tap', function (event) {
  77. console.log('tap grandchild1');
  78. })
  79. .on('pan', function (event) {
  80. console.log('pan grandchild1')
  81. });
  82. hammers['child2'] = propagating(new Hammer(child2))
  83. .on('tap', function (event) {
  84. console.log('tap child2');
  85. event.stopPropagation();
  86. })
  87. .on('pan', function (event) {
  88. console.log('pan child2');
  89. event.stopPropagation();
  90. });
  91. hammers['grandchild2'] = propagating(new Hammer(grandchild2))
  92. .on('tap', function (event) {
  93. console.log('tap grandchild2');
  94. })
  95. .on('pan', function (event) {
  96. console.log('pan grandchild2');
  97. });
  98. // hammerParent.on('hammer.input', function (event) {
  99. // console.log('hammer.input', event);
  100. // });
  101. function destroy() {
  102. Object.keys(hammers).forEach(function (name) {
  103. hammers[name].destroy();
  104. });
  105. hammers = [];
  106. }
  107. </script>
  108. </body>
  109. </html>