我尝试了之前有关捏合缩放的答案
document.documentElement.addEventListener('touchstart', function (event) {
if (event.touches.length > 1) {
event.preventDefault();
}
}, false);
然而有时候当 event.touches.length > 1 时屏幕仍会缩放。
我发现最好的方法是使用 touchmove 事件,避免手指在屏幕上移动。代码将类似于以下内容:
document.documentElement.addEventListener('touchmove', function (event) {
event.preventDefault();
}, false);
在触摸事件中检查比例因子,然后防止触摸事件。
document.addEventListener('touchmove', function(event) {
event = event.originalEvent || event;
if(event.scale > 1) {
event.preventDefault();
}
}, false);
cursor: pointer
当意外发生 缩放 时,通常是以下情况造成的:
为了防止 双击 行为,我发现两种非常简单的解决方法:
<button onclick='event.preventDefault()'>Prevent Default</button>
<button style='touch-action: manipulation'>Touch Action Manipulation</button>
我发现了一个简单的解决办法,可以防止双击缩放:
// Convert touchend events to click events to work around an IOS 10 feature which prevents
// developers from using disabling double click touch zoom (which we don't want).
document.addEventListener('touchend', function (event) {
event.preventDefault();
$(event.target).trigger('click');
}, false);
document.addEventListener('touchmove', function(e) {
e.preventDefault();
}, { passive: false });
我在我的iOS页面上(iPhone 6,iOS 10.0.2)实践了所有以上答案,但没有成功。这是我的解决方案:
$(window).bind('gesturestart touchmove', function(event) {
event = event.originalEvent || event;
if (event.scale !== 1) {
event.preventDefault();
document.body.style.transform = 'scale(1)'
}
});
这个对我有用:
document.documentElement.addEventListener('touchmove', function (event) {
event.preventDefault();
}, false);