diff --git a/src/core/view/components/image/index.vue b/src/core/view/components/image/index.vue index 1c5b5cf85b9dad75989afbd86a13ce5732f76298..62a29e4b2cf1432269df116d12cf2db7b5bab801 100644 --- a/src/core/view/components/image/index.vue +++ b/src/core/view/components/image/index.vue @@ -7,6 +7,7 @@ 2 || Math.abs(y1 - y0) > 2)) { + document.addEventListener('click', clickEventListener, true) + hasClickListenerOld = true + } // TODO target currentTarget touches changedTouches const res = fn($event, 'move', $event.pageX, $event.pageY) x1 = $event.pageX @@ -94,15 +108,23 @@ export default { return fn($event, 'end', $event.changedTouches[0].pageX, $event.changedTouches[0].pageY) } }) - const mouseUpEventListener = this.__mouseUpEventListener = function ($event) { + const mouseUpEventListener = this.__mouseUpEventListener = ($event) => { hasMouseDown = false if (!hasTouchStart && $eventOld) { + // 鼠标抬起,存在监听,则 mouseup 结束后移除就监听事件 + if (hasClickListenerOld) { + setTimeout(() => { + document.removeEventListener('click', this.__clickEventListener, true) + hasClickListenerOld = false + }, 0) + } // TODO target currentTarget touches changedTouches $eventOld = null return fn($event, 'end', $event.pageX, $event.pageY) } } document.addEventListener('mouseup', mouseUpEventListener) + addListenerToElement(element, 'touchcancel', function ($event) { if ($eventOld) { hasTouchStart = false