• 移动端——页面点击( 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,是为了使函数适用于小于一个屏幕高度的页面。

  • 相关阅读:
    Vue项目中跨域问题解决
    子网掩码
    C++的const类成员函数
    在python3中使用urllib.request编写简单的网络爬虫
    Linux 重定向输出到多个文件中
    背包问题
    hdu-1272 小希的迷宫
    SQLAlchemy 几种查询方式总结
    pycharm快捷键、常用设置、配置管理
    python3判断字典、列表、元组为空以及字典是否存在某个key的方法
  • 原文地址:https://www.cnblogs.com/lyr1213/p/7117727.html
Copyright © 2020-2023  润新知