diff --git a/packages/uni-app-plus/dist/uni-app-view.umd.js b/packages/uni-app-plus/dist/uni-app-view.umd.js index 1e902f909ed4d6f3427d29475e46c574f23e5908..e14327a33a291f59b8ea57b1c19ece7a42f8e656 100644 --- a/packages/uni-app-plus/dist/uni-app-view.umd.js +++ b/packages/uni-app-plus/dist/uni-app-view.umd.js @@ -2370,8 +2370,27 @@ const { subscribe } = UniViewJSBridge; subscribe(VD_SYNC, onVdSync); } + function preventDoubleTap() { + if (String(navigator.vendor).indexOf("Apple") === 0) { + let firstEvent = null; + let timeout; + document.documentElement.addEventListener("click", (event) => { + const TIME_MAX = 450; + const PAGE_MAX = 44; + clearTimeout(timeout); + if (firstEvent && Math.abs(event.pageX - firstEvent.pageX) <= PAGE_MAX && Math.abs(event.pageY - firstEvent.pageY) <= PAGE_MAX && event.timeStamp - firstEvent.timeStamp <= TIME_MAX) { + event.preventDefault(); + } + firstEvent = event; + timeout = setTimeout(() => { + firstEvent = null; + }, TIME_MAX); + }); + } + } function initView() { initSubscribeHandlers(); + preventDoubleTap(); } window.UniViewJSBridge = UniViewJSBridge$1; function onWebviewReady() { diff --git a/packages/uni-app-plus/src/view/framework/gesture.ts b/packages/uni-app-plus/src/view/framework/gesture.ts new file mode 100644 index 0000000000000000000000000000000000000000..2fb34a3e09e730595bfb136df871b8eeec9dbf07 --- /dev/null +++ b/packages/uni-app-plus/src/view/framework/gesture.ts @@ -0,0 +1,24 @@ +export function preventDoubleTap() { + if (String(navigator.vendor).indexOf('Apple') === 0) { + let firstEvent: MouseEvent | null = null + let timeout: number + // 用于全局禁用 iOS 双击包含手势 + document.documentElement.addEventListener('click', (event) => { + const TIME_MAX = 450 + const PAGE_MAX = 44 + clearTimeout(timeout) + if ( + firstEvent && + Math.abs(event.pageX - firstEvent.pageX) <= PAGE_MAX && + Math.abs(event.pageY - firstEvent.pageY) <= PAGE_MAX && + event.timeStamp - firstEvent.timeStamp <= TIME_MAX + ) { + event.preventDefault() + } + firstEvent = event + timeout = setTimeout(() => { + firstEvent = null + }, TIME_MAX) + }) + } +} diff --git a/packages/uni-app-plus/src/view/framework/index.ts b/packages/uni-app-plus/src/view/framework/index.ts index f51d1289edad8a3bc12f9933bf0e6271e40dd4bb..db13055bcd41fbb937925943edb90915449a9487 100644 --- a/packages/uni-app-plus/src/view/framework/index.ts +++ b/packages/uni-app-plus/src/view/framework/index.ts @@ -1,5 +1,7 @@ import { initSubscribeHandlers } from './subscriber' +import { preventDoubleTap } from './gesture' export function initView() { initSubscribeHandlers() + preventDoubleTap() }