From e29c3d5e261859b294802e92fe4ce321ef819059 Mon Sep 17 00:00:00 2001 From: Vanessa Date: Wed, 3 Aug 2022 09:36:45 +0800 Subject: [PATCH] :art: fix https://github.com/siyuan-note/siyuan/issues/5559 --- app/src/menus/Menu.ts | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/app/src/menus/Menu.ts b/app/src/menus/Menu.ts index a176cea25..424dfdc1f 100644 --- a/app/src/menus/Menu.ts +++ b/app/src/menus/Menu.ts @@ -5,8 +5,11 @@ import {isMobile} from "../util/functions"; export class Menu { public element: HTMLElement; + private wheelEvent: string; constructor() { + this.wheelEvent = "onwheel" in document.createElement("div") ? "wheel" : "mousewheel"; + this.element = document.getElementById("commonMenu"); this.element.addEventListener(isMobile() ? getEventName() : "mouseover", (event) => { const target = event.target as Element; @@ -53,7 +56,17 @@ export class Menu { }); } + private preventDefault(event: KeyboardEvent) { + event.preventDefault(); + } + public remove() { + if (isMobile()) { + window.removeEventListener("touchmove", this.preventDefault, false); + } else { + window.removeEventListener(this.wheelEvent, this.preventDefault, false); + } + this.element.innerHTML = ""; this.element.classList.add("fn__none"); this.element.style.zIndex = ""; @@ -67,6 +80,12 @@ export class Menu { } public popup(options: { x: number, y: number, h?: number }, isLeft = false) { + if (isMobile()) { + window.addEventListener("touchmove", this.preventDefault, {passive: false}); + } else { + window.addEventListener(this.wheelEvent, this.preventDefault, {passive: false}); + } + this.element.classList.remove("fn__none"); setPosition(this.element, options.x - (isLeft ? window.siyuan.menus.menu.element.clientWidth : 0), options.y, options.h); }