|
1 | 1 | /*
|
2 | 2 | * Hammer.JS
|
3 |
| - * version 0.3 |
| 3 | + * version 0.4 |
4 | 4 | * author: Eight Media
|
5 | 5 | * https://github.com/EightMedia/hammer.js
|
6 | 6 | */
|
@@ -34,7 +34,6 @@ function Hammer(element, options, undefined)
|
34 | 34 | };
|
35 | 35 | options = mergeObject(defaults, options);
|
36 | 36 |
|
37 |
| - |
38 | 37 | // some css hacks
|
39 | 38 | (function() {
|
40 | 39 | if(!options.css_hacks) {
|
@@ -472,13 +471,38 @@ function Hammer(element, options, undefined)
|
472 | 471 | else {
|
473 | 472 | // Listen for mouseup on the document so we know it happens
|
474 | 473 | // even if the mouse has left the element.
|
475 |
| - element.addEventListener("mouseout", handleEvents, false); |
| 474 | + element.addEventListener("mouseout", function(event) { |
| 475 | + if(!isInsideHammer(element, event.relatedTarget)) { |
| 476 | + handleEvents(event); |
| 477 | + } |
| 478 | + }, false); |
476 | 479 | element.addEventListener("mouseup", handleEvents, false);
|
477 | 480 | element.addEventListener("mousedown", handleEvents, false);
|
478 | 481 | element.addEventListener("mousemove", handleEvents, false);
|
479 | 482 | }
|
480 | 483 |
|
481 | 484 |
|
| 485 | + /** |
| 486 | + * find if element is (inside) given parent element |
| 487 | + * @param object element |
| 488 | + * @param object parent |
| 489 | + * @return bool inside |
| 490 | + */ |
| 491 | + function isInsideHammer(parent, child) { |
| 492 | + if(parent === child){ |
| 493 | + return true; |
| 494 | + } |
| 495 | + var node = child.parentNode; |
| 496 | + while(node !== null){ |
| 497 | + if(node === parent){ |
| 498 | + return true; |
| 499 | + }; |
| 500 | + node = node.parentNode; |
| 501 | + } |
| 502 | + return false; |
| 503 | + } |
| 504 | + |
| 505 | + |
482 | 506 | /**
|
483 | 507 | * merge 2 objects into a new object
|
484 | 508 | * @param object obj1
|
|
0 commit comments