From a61688b517d0ec47b18d8bf53bcce262852949ff Mon Sep 17 00:00:00 2001 From: MurakamiShinyu Date: Mon, 29 Oct 2018 04:49:18 +0900 Subject: [PATCH] prevent undesirable page swipe --- src/js/bindings/swipePages.js | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/js/bindings/swipePages.js b/src/js/bindings/swipePages.js index 5f9bcd5..475d8f2 100644 --- a/src/js/bindings/swipePages.js +++ b/src/js/bindings/swipePages.js @@ -29,10 +29,23 @@ ko.bindingHandlers.swipePages = { init(element, valueAccessor) { if (supportTouchEvents && ko.unwrap(valueAccessor())) { element.addEventListener("touchstart", (event) => { + if (event.touches.length > 1) { + return; // multi-touch is not for page swipe + } + if (window.visualViewport && window.visualViewport.scale > 1) { + return; // disable page swipe when pinch-zoomed + } + const viewportElement = document.getElementById("vivliostyle-viewer-viewport"); + if (viewportElement && viewportElement.scrollWidth > viewportElement.clientWidth) { + return; // disable page swipe when horizontal scrollable + } xStart = event.touches[0].clientX; yStart = event.touches[0].clientY; }); element.addEventListener("touchmove", (event) => { + if (event.touches.length > 1) { + return; + } if (xStart !== null && yStart !== null) { let xDiff = event.touches[0].clientX - xStart; let yDiff = event.touches[0].clientY - yStart;