From b994d98685915e7b8fb59f103ad53207ce8aeac2 Mon Sep 17 00:00:00 2001 From: Tony Air Date: Tue, 18 Feb 2020 01:45:54 +0700 Subject: [PATCH] IMPROVEMENT: Detect touch screen --- src/js/_main.js | 42 +++++++++++++++++++++++++++++++++++++++++- 1 file changed, 41 insertions(+), 1 deletion(-) diff --git a/src/js/_main.js b/src/js/_main.js index c7312c8..3d7facd 100755 --- a/src/js/_main.js +++ b/src/js/_main.js @@ -126,7 +126,47 @@ const MainUI = ($ => { hash: '', }; - W.IsTouchScreen = 'ontouchstart' in window || navigator.msMaxTouchPoints; + let eventFired = false; + const setTouchScreen = bool => { + if (W.IsTouchScreen === bool || eventFired) { + return; + } + + eventFired = true; + + W.IsTouchScreen = bool; + $.support.touch = W.IsTouchScreen; + + if (bool) { + console.log(`${NAME}: Touch screen enabled`); + } else { + console.log(`${NAME}: Touch screen disabled`); + } + + // prevent firing touch and mouse events together + setTimeout(() => { + eventFired = false; + }, 200); + }; + + setTouchScreen('ontouchstart' in window || navigator.msMaxTouchPoints > 0); + + // disable touch on mouse events + /*D.addEventListener('mousemove', () => { + setTouchScreen(false); + }); + + D.addEventListener('mousedown', () => { + setTouchScreen(false); + });*/ + + // enable touch screen on touch events + D.addEventListener('touchmove', () => { + setTouchScreen(true); + }); + D.addEventListener('touchstart', () => { + setTouchScreen(true); + }); class MainUI { // Static methods