穿透(點穿)是在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在這方面表現甚好。所以在開發時我們只需使用...