fix: 防止拖选内容误关闭弹窗 (#56)
This commit is contained in:
+15
-2
@@ -164,9 +164,22 @@
|
||||
});
|
||||
|
||||
document.querySelectorAll(".modal-backdrop").forEach(function (modal) {
|
||||
/* 关闭:叉、取消按钮,以及点弹窗外面的灰底 */
|
||||
/* 关闭:叉、取消按钮,以及真正点弹窗外面的灰底。
|
||||
|
||||
不能只看 click 的 target:从输入框按下拖选到灰底松开时,浏览器会把
|
||||
合成的 click 目标设成灰底。只有手势也从灰底开始,才算有意关闭。 */
|
||||
var pointerStartedOnBackdrop = false;
|
||||
modal.addEventListener("pointerdown", function (e) {
|
||||
pointerStartedOnBackdrop = e.target === modal;
|
||||
});
|
||||
modal.addEventListener("pointercancel", function () {
|
||||
pointerStartedOnBackdrop = false;
|
||||
});
|
||||
modal.addEventListener("click", function (e) {
|
||||
if (e.target === modal || e.target.closest("[data-modal-close]")) {
|
||||
var clickedCloseButton = e.target.closest("[data-modal-close]");
|
||||
var clickedBackdrop = e.target === modal && pointerStartedOnBackdrop;
|
||||
pointerStartedOnBackdrop = false;
|
||||
if (clickedBackdrop || clickedCloseButton) {
|
||||
closeModal(modal);
|
||||
}
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user