摘要:為了判斷用戶是否是進(jìn)行雙擊操作。因?yàn)橐苿?dòng)端雙擊是放大文字的手勢操作??梢宰屘囟ǖ脑鼗蛘哒麄€(gè)文檔中的元素移除點(diǎn)擊延遲的問題,同時(shí)不會影響通過事件代替事件。對于交互相對復(fù)雜的移動(dòng)端頁面或應(yīng)用是一個(gè)相對不錯(cuò)的解決方案。
移動(dòng)端點(diǎn)擊延遲問題研究 測試 html javascript
// 通過是否調(diào)用 fastclick 這個(gè)庫來屏蔽點(diǎn)擊延遲來查看是否存在點(diǎn)擊延遲的問題 // FastClick.attach(document.body); var touchEndTime; var clickTime; var clickDelay; function now() { return new Date().getTime(); } $("#btn").on("click", function() { clickTime = now(); clickDelay = clickTime - touchEndTime; alert(clickDelay); }); $("#btn").on("touchEnd", function() { touchEndTime = now(); });
這個(gè)頁面包含 meta 標(biāo)簽:測試結(jié)果
測試環(huán)境:iPhone6s微信內(nèi)置瀏覽器
未使用 fastclick:測試結(jié)果延遲在 350 ~ 370 之間
使用 fastclick: 測試結(jié)果在 0 ~ 5 之間
測試環(huán)境:iPhone6s貝貝客戶端v4.9.05
未使用 fastclick: 測試結(jié)果在 5 ~ 20 之間
使用 fastclick:測試結(jié)果在 0 ~ 5 之間
現(xiàn)在我們來看看什么是點(diǎn)擊延遲?點(diǎn)擊延遲是指移動(dòng)端瀏覽器在 touchend 和 click 之間存在 300ms ~ 350ms 的延遲。為了判斷用戶是否是進(jìn)行雙擊操作。因?yàn)橐苿?dòng)端雙擊是放大文字的手勢操作。
解決方案
對于chrome和firefox,可以通過禁用伸縮,即在 head 上的 meta 標(biāo)簽添加 user-scalable = no。如下:
chrome32+ 可以將 viewport 的寬度設(shè)置成 device-width.
IE10+,可以使用 pointerEvents。可以讓特定的元素或者整個(gè)文檔中的元素移除點(diǎn)擊延遲的問題,同時(shí)不會影響 pinch-zooming
a, button, .myelements { -ms-touch-action: manipulation; /* IE10 */ touch-action: manipulation; /* IE11+ */ }
通過 touchend 事件代替 click 事件。
使用 zepto.js 的 tap 事件,通過 singleTap 和 doubleTap 來區(qū)分單擊和雙擊。但是會出現(xiàn)點(diǎn)擊穿透,而且對于已經(jīng)使用 click 的文件,改動(dòng)成本太大。
終極大 boss。 fastclick。上面的幾種方法都是針對某些瀏覽器,或者某些瀏覽器的某些版本,或者會影響到我們平常使用方式的解決方案。使用起來不方便且考慮的細(xì)節(jié)很多,實(shí)踐難度比較大。fastclick 作為一個(gè)終極的解決方案,使用方便,文件大小壓縮后只有 3.3k。對于交互相對復(fù)雜的移動(dòng)端web頁面或應(yīng)用是一個(gè)相對不錯(cuò)的解決方案。
javascript: if ("addEventListener" in document) { document.addEventListener("DOMContentLoaded", function() { FastClick.attach(document.body); }, false); } jQuery: $(function() { FastClick.attach(document.body); }); CommonJS: var attachFastClick = require("fastclick"); attachFastClick(document.body); AMD: var FastClick = require("fastclick"); FastClick.attach(document.body, options);
參考:
5-ways-prevent-300ms-click-delay-mobile-devices
pointerevents
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/91202.html
摘要:使用移動(dòng)設(shè)備查看頁面時(shí)會發(fā)現(xiàn),在微信瀏覽器中有頂部導(dǎo)航欄有效解決圖片使用單位邊角缺失的問題前端掘金起因在移動(dòng)端使用布局時(shí)圖片也需要用單位。移動(dòng)端實(shí)踐前端掘金說起,相信大家并不陌生。 Sticky Footer,完美的絕對底部 - 前端 - 掘金寫在前面 做過網(wǎng)頁開發(fā)的同學(xué)想必都遇到過這樣尷尬的排版問題:在主體內(nèi)容不足夠多或者未完全加載出來之前,就會導(dǎo)致出現(xiàn)(圖一)的這種情況,原因是因?yàn)?..
摘要:打個(gè)招聘廣告杭州阿里巴巴招前端想去西溪的也可幫推薦,比較缺人,機(jī)會多多廣告位長期有效,有興趣簡歷我郵箱個(gè)人在移動(dòng)端的一些總結(jié)歸納,有新的知識點(diǎn)會一直更新一部分用做動(dòng)畫時(shí),變形盡量通過來實(shí)現(xiàn),而不是用,等屬性。不過的事件有一個(gè)事件穿透的問題。 打個(gè)招聘廣告: 杭州 阿里巴巴B2B 招前端(想去西溪的也可幫推薦),比較缺人,機(jī)會多多!廣告位長期有效,有興趣簡歷我郵箱:854936875@q...
摘要:打個(gè)招聘廣告杭州阿里巴巴招前端想去西溪的也可幫推薦,比較缺人,機(jī)會多多廣告位長期有效,有興趣簡歷我郵箱個(gè)人在移動(dòng)端的一些總結(jié)歸納,有新的知識點(diǎn)會一直更新一部分用做動(dòng)畫時(shí),變形盡量通過來實(shí)現(xiàn),而不是用,等屬性。不過的事件有一個(gè)事件穿透的問題。 打個(gè)招聘廣告: 杭州 阿里巴巴B2B 招前端(想去西溪的也可幫推薦),比較缺人,機(jī)會多多!廣告位長期有效,有興趣簡歷我郵箱:854936875@q...
摘要:所以這種情況下是不符合點(diǎn)擊事件的定義的。,關(guān)于移動(dòng)端的點(diǎn)擊事件總結(jié)完了,可能你都沒想到一個(gè)簡單的點(diǎn)擊事件會有那么多坑,如果你在工作中可能會涉及到移動(dòng)端開發(fā)的話,相信這篇文章還是值得你點(diǎn)贊和收藏的,畢竟是踩了那么多坑的經(jīng)驗(yàn)總結(jié)。 看標(biāo)題的時(shí)候你可能會想,點(diǎn)擊事件有什么好說的,還寫一篇攻略?哈哈,如果你這么想,只能說明你too young to simple. 接觸過移動(dòng)端開發(fā)的同學(xué)可能都...
閱讀 2759·2021-11-19 09:40
閱讀 5332·2021-09-27 14:10
閱讀 2110·2021-09-04 16:45
閱讀 1489·2021-07-25 21:37
閱讀 3005·2019-08-30 10:57
閱讀 2990·2019-08-28 17:59
閱讀 1063·2019-08-26 13:46
閱讀 1415·2019-08-26 13:27