一般情況下下面這段meta標(biāo)簽就可以禁止用戶縮放了
<meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1, user-scalable=no">
但是測(cè)試的時(shí)候會(huì)發(fā)現(xiàn) 在ios10中無(wú)效 快速雙擊頁(yè)面或者兩指可以放大
一般的做法如下:
document.documentElement.addEventListener('touchstart', function (event) {
if (event.touches.length > 1) {
event.preventDefault();
}
}, false);
var lastTouchEnd = 0;
document.documentElement.addEventListener('touchend', function (event) {
var now = Date.now();
if (now - lastTouchEnd <= 300) {
event.preventDefault();
}
lastTouchEnd = now;
}, false);
但是你會(huì)發(fā)現(xiàn)在ios10中并沒(méi)有起作用
我們來(lái)看看ios專屬手勢(shì)事件Gesture和通用事件touch的出發(fā)過(guò)程:
在同時(shí)監(jiān)聽(tīng)了Gesture事件和Touch事件,則事件觸發(fā)模式如下:
touchstart 第一個(gè)手指接觸屏幕時(shí)觸發(fā)
gesturestart 第二個(gè)手指接觸屏幕時(shí)觸發(fā)
touchstart 第二個(gè)手指接觸屏幕時(shí)觸發(fā)
gesturechange 兩個(gè)手指都在屏幕上時(shí),每次手指在屏幕上移動(dòng)時(shí)觸發(fā)
gestureend 第二個(gè)手指 離開(kāi)屏幕時(shí)觸發(fā)
touchend 第二個(gè)手指 離開(kāi)屏幕時(shí)觸發(fā)
touchend 第一個(gè)手指 離開(kāi)屏幕時(shí)觸發(fā)
所以我們要額外添加ios專屬的“多指”觸摸事件:gesturestart、gesturechange、gestureend來(lái)禁止默認(rèn)事件
禁止ios10雙指縮放
document.addEventListener('gesturestart', function(event) {
event.preventDefault();
});
到此問(wèn)題解決