禁止移動端safari瀏覽器雙擊放大事件


自己在一個微信項目優化過程遇到一個問題,所以記錄下來。廢話不說,下面進入正題。

1.添加meta便簽

首先解決移動端瀏覽器放大問題一般是添加一個meta便簽,防止用戶手動放大網頁問題。

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

該meta標簽的作用是讓當前viewport的寬度等於設備的寬度,同時不允許用戶手動縮放。也許允不允許用戶縮放不同的網站有不同的要求,但讓viewport的寬度等於設備的寬度,這個應該是大家都想要的效果,如果你不這樣的設定的話,那就會使用那個比屏幕寬的默認viewport,也就是說會出現橫向滾動條。

width:

控制 viewport 的大小,可以指定的一個值或者特殊的值,如 device-width 為設備的寬度(單位為縮放為 100% 時的 CSS 的像素)。

height:

和 width 相對應,指定高度。

initial-scale:

初始縮放。即頁面初始縮放程度。這是一個浮點值,是頁面大小的一個乘數。例如,如果你設置初始縮放為“1.0”,如果你設置為“2.0”,那么這個頁面就會放大為2倍。

maximum-scale:

最大縮放。即允許的最大縮放程度。這也是一個浮點值,用以指出頁面大小與屏幕大小相比的最大乘數。例如,如果你將這個值設置為“2.0”,那么這個頁面最多能放大2倍。

user-scalable:

用戶調整縮放。即用戶是否能改變頁面縮放程度。如果設置為yes則是允許用戶對其進行改變,反之為no。默認值是yes。如果你將其設置為no,那么minimum-scale 和 maximum-scale都將被忽略,因為根本不可能縮放。

以上設置完畢之后,在一般瀏覽器上已經實現了阻止用戶手動放大頁面。但是在ios safari瀏覽器上進行測試,發現雙擊頁面,頁面還是會放大,那么我們進行下一步的設置。

 

2.阻止click事件的觸發

我們認識的click事件在移動端瀏覽器其實是默認完整touchstart-touchend這兩個事件的觸發,只要阻止其中的一個事件觸發就能阻止click事件,那么有人會說為什么不直接禁止掉click事件的觸發?其實如果你沒有點擊的事件的需求的話,

完全可以這么做。但是一般的頁面都還是需要點擊的事件觸發的。那么在這里,我們的思路可以用touchstart事件來代替click事件來進行點擊事件的觸發,只要阻止touchend事件的默認事件就可以的。

    $('body').on('touchend',function(e) {
            e.preventDefault();
        });

這樣就可以滿足點擊事件的觸發,又可以阻止在ios safari瀏覽器出現頁面雙擊放大。  

 

  


免責聲明!

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



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