移動(dòng)端防止?jié)L動(dòng)觸發(fā)thouchend或單擊事件

在移動(dòng)端頁面進(jìn)行優(yōu)化時(shí),一般使用touch事件替代鼠標(biāo)相關(guān)事件。用的較多的是使用touchend事件替代PC端的click和mouseup事件。

可是,touchend事件在頁面滾動(dòng)時(shí)有個(gè)問題。在滾動(dòng)完畢后,假設(shè)當(dāng)前觸點(diǎn)的位置所指的元素綁定了touchend事件,這時(shí)便會(huì)觸發(fā)該元素的touchend事件,造成誤操作,相當(dāng)煩人。

思路:就是在頁面滾動(dòng)時(shí)停止touchend事件冒泡。這樣就能夠防止觸發(fā)touchend事件。

解決方案(直接引用):


function stopTouchendPropagationAfterScroll(){

? ? var locked = false;

? ? window.addEventListener('touchmove', function(ev){

? ? ? ? locked || (locked = true, window.addEventListener('touchend', stopTouchendPropagation, true));

? ? }, true);

? ? function stopTouchendPropagation(ev){

? ? ? ? ev.stopPropagation();

? ? ? ? window.removeEventListener('touchend', stopTouchendPropagation, true);

? ? ? ? locked = false;

? ? }

}

stopTouchendPropagationAfterScroll();


額外提醒:

在移動(dòng)端,scroll事件是在滾動(dòng)結(jié)束后才會(huì)觸發(fā)一次。而touchmove事件是在滑動(dòng)過程中多次觸發(fā)。使用scroll會(huì)比使用touchmove在性能上有一定優(yōu)化。

可是。上面代碼之所以不用scroll事件,而用touchmove事件。是為了同一時(shí)候適用于小于一個(gè)屏幕高度的頁面。所以也是不得已使用touchmove。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • ??JavaScript 與 HTML 之間的交互是通過事件實(shí)現(xiàn)的。 ??事件,就是文檔或?yàn)g覽器窗口中發(fā)生的一些特...
    霜天曉閱讀 3,688評論 1 11
  • 本節(jié)介紹各種常見的瀏覽器事件。 鼠標(biāo)事件 鼠標(biāo)事件指與鼠標(biāo)相關(guān)的事件,主要有以下一些。 click 事件,dblc...
    許先生__閱讀 2,839評論 0 4
  • 第3章 基本概念 3.1 語法 3.2 關(guān)鍵字和保留字 3.3 變量 3.4 數(shù)據(jù)類型 5種簡單數(shù)據(jù)類型:Unde...
    RickCole閱讀 5,505評論 0 21
  • 幾十年前,在美國只有三分之一的人選擇獨(dú)居,目前已超過人口半數(shù):根據(jù)美國勞工統(tǒng)計(jì)局?jǐn)?shù)據(jù),截至2015年8月,16歲...
    長風(fēng)破浪1閱讀 410評論 0 0
  • 1、批評別人是最愚蠢的行為 批評是危險(xiǎn)的,因?yàn)樗3σ粋€(gè)人寶貴的自尊,并激起對方的強(qiáng)烈反抗。我們不要去責(zé)備別人...
    寧靜致遠(yuǎn)hfm閱讀 263評論 4 6

友情鏈接更多精彩內(nèi)容