解決ios10及以上Safari雙擊和雙指縮放無法禁止的問題


移動端web縮放有兩種

 

1.雙擊縮放;

2.雙指手勢縮放。

 

iOS 10以前,iOSAndroid都可以通過一行meta標簽來禁止頁面縮放

<meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0;" name="viewport" />

iOS 10開始,meta設置在Safari內無效了。

 

 后來在網上看到一個解決方案:

 

window.onload=function () {

    document.addEventListener('touchstart',function (event) {

        if(event.touches.length>1){

            event.preventDefault();

        }

    })

    var lastTouchEnd=0;

    document.addEventListener('touchend',function (event) {

        var now=(new Date()).getTime();

        if(now-lastTouchEnd<=300){

            event.preventDefault();

        }

        lastTouchEnd=now;

    },false)

}

 

經過測試,這種方法只能禁止雙擊縮放。只好繼續找解決方案了。

 

原來在iOS里有一組雙指手勢操作的事件:gesturestartgesturechangegestureend

在上面的js方法里加入下面的事件監聽:

    document.addEventListener('gesturestart', function (event) {

      event.preventDefault();

    });

        

既不能雙擊縮放,也不能雙指縮放。

完整代碼:

 

   

 <script>

     /*禁止ios縮放,雙擊和雙指*/

      window.onload=function () {

        document.addEventListener('touchstart',function (event) {

          if(event.touches.length>1){

            event.preventDefault();

          }

        });

        var lastTouchEnd=0;

        document.addEventListener('touchend',function (event) {

          var now=(new Date()).getTime();

          if(now-lastTouchEnd<=300){

            event.preventDefault();

          }

          lastTouchEnd=now;

        },false);

        document.addEventListener('gesturestart', function (event) {

          event.preventDefault();

        });

      }

    </script>

 

參考鏈接: 

https://stackoverflow.com/questions/37808180/disable-viewport-zooming-ios-10-safari


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM