IOS移动设备禁用缩放

问题描述 投票:0回答:1

我想为在IOS 13.0或更高版本上运行的渐进式Web应用程序禁用缩放。

我已经看到了很多类似的查询,但是答案似乎不完整。我试图找到一种使用多个事件侦听器(例如touchstart和touchmove)来阻止默认浏览器事件[event.stopPropagation(),event.preventDefault()]的解决方案,并在触摸操作下进行播放……但无济于事。

Disable pinch zoom on IOS 13 safari

html meta viewport user-scalable=no seemed no longer working on iOS 13.3

同时也禁用了doubleclick缩放,我也遇到类似的问题

Disable double tap zoom on Safari iOS 13 +

感谢您的帮助,

斯图尔特

ios zoom pinchzoom
1个回答
0
投票

我正在这样做(touchmovetime是一个全局变量,用于在上一次触摸发生时存储时间戳):

// add events to inputs and disable pinchtozoom
var disablePinchToZoom = function (event) {
  if (typeof event.scale !== "undefined" && event.scale !== 1) { event.preventDefault(); }
    touchmovetime=event.timeStamp;
};
var cmDisabledTouchmove = function (event) {
  event.preventDefault();
    touchmovetime=event.timeStamp;
};
var myDisabledEvent = function (event) {
    event.preventDefault();
    if ((event.timeStamp - touchmovetime)>200) {
    event.changedTouches[0].target.click();
    event.changedTouches[0].target.focus();
  } // always clicks but not for touchmove events
};

var ids= ["element1", "element2"];
    var c, elements;
        for (var i in ids) {
            c = document.getElementById(ids[i]);
            c.addEventListener("touchmove", disablePinchToZoom, false);
            c.addEventListener("touchend", myDisabledEvent, false);
            if (isAndroid) {
                c.addEventListener("touchstart", function(e) { touchEvent.preventDefault(); }, false);
            }
        }
    }
    }
© www.soinside.com 2019 - 2024. All rights reserved.