From 293bd1bb6619caa5181ca7bc87d84dc7fa452f63 Mon Sep 17 00:00:00 2001 From: tianjiaxing Date: Tue, 2 Feb 2021 20:02:54 +0800 Subject: [PATCH] fixed: click event conflict with dragging, image add draggable attribute. --- src/core/view/components/image/index.vue | 5 +++++ src/core/view/mixins/touchtrack.js | 24 +++++++++++++++++++++++- 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/src/core/view/components/image/index.vue b/src/core/view/components/image/index.vue index 1c5b5cf85b..62a29e4b2c 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 -- GitLab