移動開發之fastclick 點選穿透

2022-08-30 05:51:10 字數 997 閱讀 1502

穿透(點穿)是在mobile各種瀏覽器上發生的常見的bug。可能是由click事件的延遲(300ms)或者事件冒泡導致

現象:在a頁面中有個 btn1《或a標籤》,在b頁面中有個 btn2,btn1和btn1都在螢幕同乙個位置,兩個按鈕都有綁有自己的點選事件。btn1的click事件觸發後跳轉到b頁面。當btn1被點選後跳到b頁面,btn2按鈕的click事件也被觸發了

一般的解決方案如下:

a. 使用fastclick,這個可以非常完美的解決點穿問題。

b. 在touchend事件**中加入preventdefault, 並在下一層中加上pointer-events:none。

但是頁面的a標籤還是存在點選穿透,導致頁面跳轉, fastclick無效果

在網上搜尋和實踐後總結如下方案

1.通過touchstart,touchmove,touchend,來模擬乙個click(tap)事件,這樣除了防止穿透外,事件響應速度也會提高。

移動端的click都是touch之後,才會模擬觸發,觸發的順序是:

touchstart —> touchmove —> touchend —> mousedown —> mousemove —> mouseenter —> click

2.移動端存在300ms延時,那麼在b頁面中先放乙個遮罩層

,遮住頁面全部內容,然後等b頁面載入完  ,將遮罩層隱藏

<

div

id="dcmask"

>

div>

$(function(),300);

});

3.使用css的 pointer-events:none

先使用 pointer-events 禁掉元素的點選事件,頁面載入完300ms後恢復事件,設定 pointer-events:auto

a[href]

$(function

(),300);

});

移動開發之viewport

meta viewport 有6個屬性 暫且把content中的那些東西稱為乙個個屬性和值 如下 name value width 設定 layout viewport 的寬度,為乙個正整數,或字串 width device initial scale 設定頁面的初始縮放值,為乙個數字,可以帶小數 ...

移動端(iOS)SDK開發注意點

sdk開發相關的知識網上沒有太細緻的總結,下面根據自己的經驗總結一下 sdk開發怎麼做到更專業?不管內部 多麼混亂 沒有層次 不專業,但是提交給他人的sdk 標頭檔案 庫 要保證足夠的專業性,簡單來說就是一句話 這一句話包含的資訊量甚多,最大前提就是沒有bug我就不說了 盡量做到吧 下面根據過程詳細...

移動端Web開發注意點

移動端開發主要物件是手持裝置,其中絕大部分是ios和android系統,so,在開發此類頁面時不必糾結ie和其他一些2b瀏覽器的相容性,webkit是本次開發重點。當然,不同版本的android是存在一些問題的,還有就是不同瀏覽器的版本也存在一些差別,ios在這方面表現甚好。所以在開發時我們只需使用...