diff --git a/internal/ui/static/js/app.js b/internal/ui/static/js/app.js index a19fcc88..a0713f3a 100644 --- a/internal/ui/static/js/app.js +++ b/internal/ui/static/js/app.js @@ -1230,8 +1230,10 @@ function initializeKeyboardShortcuts() { * Initialize touch handler for mobile devices. */ function initializeTouchHandler() { - const touchHandler = new TouchHandler(); - touchHandler.listen(); + if ( "ontouchstart" in window || navigator.maxTouchPoints > 0) { + const touchHandler = new TouchHandler(); + touchHandler.listen(); + } } /** diff --git a/internal/ui/static/js/touch_handler.js b/internal/ui/static/js/touch_handler.js index aa314f23..ba4f2eb9 100644 --- a/internal/ui/static/js/touch_handler.js +++ b/internal/ui/static/js/touch_handler.js @@ -151,35 +151,27 @@ class TouchHandler { } } - static isTouchSupported() { - return "ontouchstart" in window || navigator.maxTouchPoints > 0; - } - listen() { - if (!TouchHandler.isTouchSupported()) { - return; - } - const eventListenerOptions = { passive: true }; document.querySelectorAll(".entry-swipe").forEach((element) => { element.addEventListener("touchstart", (e) => this.onItemTouchStart(e), eventListenerOptions); element.addEventListener("touchmove", (e) => this.onItemTouchMove(e)); element.addEventListener("touchend", (e) => this.onItemTouchEnd(e), eventListenerOptions); - element.addEventListener("touchcancel", () => this.reset(), eventListenerOptions); + element.addEventListener("touchcancel", this.reset, eventListenerOptions); }); const element = document.querySelector(".entry-content"); if (element) { if (element.classList.contains("gesture-nav-tap")) { element.addEventListener("touchend", (e) => this.onTapEnd(e), eventListenerOptions); - element.addEventListener("touchmove", () => this.reset(), eventListenerOptions); - element.addEventListener("touchcancel", () => this.reset(), eventListenerOptions); + element.addEventListener("touchmove", this.reset, eventListenerOptions); + element.addEventListener("touchcancel", this.reset, eventListenerOptions); } else if (element.classList.contains("gesture-nav-swipe")) { element.addEventListener("touchstart", (e) => this.onContentTouchStart(e), eventListenerOptions); element.addEventListener("touchmove", (e) => this.onContentTouchMove(e), eventListenerOptions); element.addEventListener("touchend", (e) => this.onContentTouchEnd(e), eventListenerOptions); - element.addEventListener("touchcancel", () => this.reset(), eventListenerOptions); + element.addEventListener("touchcancel", this.reset, eventListenerOptions); } } }