h5頁(yè)面在ios中禁止用戶縮放的meta標(biāo)簽無(wú)效的解決辦法

一般情況下下面這段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)題解決

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。