我想为在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 +
感谢您的帮助,
斯图尔特
我正在这样做(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);
}
}
}
}