zoukankan      html  css  js  c++  java
  • 移动端——页面点击( touchend -> click)

    手机端页面好多要注意的,点击事件就是其中一个:

    在手机端页面中使用 click,安卓手机能正常实现点击效果,可是苹果手机不能点击;用 touchend 代替 click,苹果手机中能点击,但是可能出现小问题。

    所以,在进行移动端页面优化时,一般使用 touch 事件替代鼠标相关事件,用的较多的是使用 touchend 事件替代PC端的 click 和 mouseup 事件。

    注:在使用 touched 时最好都加上  t.preventDefault();  阻止浏览器默认的后续动作。

    接下来记录我使用 touchend 遇到的问题的解决方法:

    1、点击后页面自动放大【 IOS 】

         具体描述:在 newPlace.html( 选择新地点)页面中,点击建筑、楼层、房间、工位右侧的 input 会弹出遮罩层,选择遮罩层中的相应选项后,会显示在对应建筑、楼层、房间、工位右侧。但是在点击弹出遮罩层时页面会自动放大。

    <li class="place_lis area" data-type="area">
       <span>建筑</span>
       <input type="text" class="control" onfocus="this.blur();">
       <img src="../img/chaoxia.png">
    </li>

          解决方法:使用 preventDefault() 方法,阻止元素发生默认的行为。

    $(".control").on('touchend',function(t){
            // 点击之后的操作
    
            t.preventDefault();    // 阻止元素发生默认的行为
        });

    2、页面滑动事件触发 touchend 点击事件【 Android & IOS 】

         具体描述:在serviceRequest.html 服务需求页面中滑动查看所有服务需求后,会跳转至需求详情页面。也就是说:在页面滑动完成后,如果当前触点的位置所指的元素绑定了 touchend 事件,这时便会触发该元素的 touchend 事件,造成误操作。

         解决方法:在页面滚动时停止 touchend 事件冒泡,这样就可以防止触发 touchend 事件。

    $(function(){
        stopTouchendPropagation_AfterScroll();
        $(document).on('touchend', '.service_cont', function (t) {  
            window.location.href = "servicePJ_before.html?id=" + $(this).attr('id') + "";
            t.preventDefault();
        });
    });
    function stopTouchendPropagation_AfterScroll(){
        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;
        }
    }

    注:在移动端,scroll 事件是在滚动结束后才会触发一次,而 touchmove 事件是在滑动过程中多次触发,使用 scroll 会比使用 touchmove 在性能上有一定优化。

           但是在上面  stopTouchendPropagation_AfterScroll() 函数中,用 touchmove 不用 scroll,是为了使函数适用于小于一个屏幕高度的页面。

  • 相关阅读:
    框架应用; Bootstrap4 框架
    框架做抖动、框架做日期
    图片轮播
    锤子手机的部分页面
    js练习题:说明事件、经过或移出时出现按钮等、网页换肤、显示隐藏、下拉、横向导航点击(移上)下拉、选项卡、进度条
    js常用对象:点击、双击、onload事件、鼠标相关、onblur事件和onfocus事件等;通过循环给多个元素添加事件、通过addEventListener() 方法 监听事件函数
    js数组、对象、函数基础知识点及数组类习题练习
    判断某个对象是不是数组
    关于使用绝对定位使元素垂直居中的问题
    mousewheel事件的兼容方法
  • 原文地址:https://www.cnblogs.com/lyr1213/p/7117727.html
Copyright © 2011-2022 走看看