\"提交信息: fix: resolve image delete button click issue\"

This commit is contained in:
yuantao
2025-10-16 18:13:21 +08:00
parent c135ab0613
commit 915fd00268

View File

@@ -60,32 +60,48 @@ const eventManager = {
// 为删除按钮添加点击事件
if (deleteBtn) {
// 添加延时检查,确保删除按钮是可见的才执行删除操作
setTimeout(() => {
// 保存事件处理函数的引用,以便后续移除
const deleteHandler = function (e) {
e.stopPropagation()
if (deleteBtn.classList.contains('visible')) {
container.remove()
handleInput()
}
}
// 保存事件处理函数的引用,以便后续移除
const deleteHandler = function (e) {
e.stopPropagation()
e.preventDefault()
// 添加延时确保不是由短按触发的切换显示操作
setTimeout(() => {
container.remove()
handleInput()
}, 50)
}
deleteBtn.addEventListener('click', deleteHandler)
deleteBtn._deleteHandler = deleteHandler
}, DELETE_BUTTON_DELAY)
deleteBtn.addEventListener('click', deleteHandler)
deleteBtn._deleteHandler = deleteHandler
}
// 为图片容器添加短按事件以显示/隐藏删除按钮
let touchStartTime = 0
let isDeleteButtonClicked = false
// 标记删除按钮被点击
const markDeleteButtonClicked = function () {
isDeleteButtonClicked = true
// 重置标记
setTimeout(() => {
isDeleteButtonClicked = false
}, 300)
}
// 如果删除按钮存在,为其添加标记事件
if (deleteBtn) {
deleteBtn._markClickHandler = markDeleteButtonClicked
deleteBtn.addEventListener('touchstart', markDeleteButtonClicked)
}
const touchStartHandler = function (e) {
touchStartTime = Date.now()
}
const touchEndHandler = function (e) {
const touchDuration = Date.now() - touchStartTime
// 短按小于200ms且非长按拖拽状态时切换删除按钮显示
if (touchDuration < 200 && !dragState.value.isLongPress) {
// 短按小于200ms且非长按拖拽状态且不是删除按钮点击时切换删除按钮显示
if (touchDuration < 200 && !dragState.value.isLongPress && !isDeleteButtonClicked) {
e.stopPropagation()
// 切换删除按钮的显示状态
if (deleteBtn) {
@@ -97,6 +113,10 @@ const eventManager = {
}
}
}
// 重置删除按钮点击标记
setTimeout(() => {
isDeleteButtonClicked = false
}, 50)
}
container.addEventListener('touchstart', touchStartHandler)
@@ -105,6 +125,7 @@ const eventManager = {
// 保存事件处理函数的引用,以便后续移除
container._touchStartHandler = touchStartHandler
container._touchEndHandler = touchEndHandler
container._markDeleteButtonClicked = markDeleteButtonClicked
},
// 移除图片容器的事件监听器
@@ -118,6 +139,7 @@ const eventManager = {
// 移除短按事件监听器
const touchStartHandler = container._touchStartHandler
const touchEndHandler = container._touchEndHandler
const markDeleteButtonClicked = container._markDeleteButtonClicked
if (touchStartHandler) {
container.removeEventListener('touchstart', touchStartHandler)
@@ -129,11 +151,22 @@ const eventManager = {
delete container._touchEndHandler
}
if (markDeleteButtonClicked) {
delete container._markDeleteButtonClicked
}
// 移除删除按钮事件监听器
const deleteBtn = container.querySelector('.image-delete-btn')
if (deleteBtn && deleteBtn._deleteHandler) {
deleteBtn.removeEventListener('click', deleteBtn._deleteHandler)
delete deleteBtn._deleteHandler
if (deleteBtn) {
if (deleteBtn._deleteHandler) {
deleteBtn.removeEventListener('click', deleteBtn._deleteHandler)
delete deleteBtn._deleteHandler
}
if (deleteBtn._markClickHandler) {
deleteBtn.removeEventListener('touchstart', deleteBtn._markClickHandler)
delete deleteBtn._markClickHandler
}
}
},
}