• 移动端:移动端事件


    移动端事件


    一、  PC端事件

    1. 鼠标类
      • click、mouseover、mouseout、mouseleave、mouseenter、mouseup、mousedown、mousewheel...
    2. 键盘类
      • keydown、keyup...
    3. 其他类
      • load、blur、focus、change....

    二、 移动端事件

    1. 点击事件
    2. 双击事件
    3. 滑动事件
      • 上滑、下滑、左滑、右滑
    4. 长按事件
    5. 摇一摇、重力感应等

    三、 touch事件模型

    1. touchstart          手指刚接触屏幕时触发
    2. touchmove        手指在屏幕上移动时触发
    3. touchend           手指从屏幕上移开时触发
    4. touchcancel       一些更高级别的事件发生时(如电话接入或者弹出信息)会取消当前的touch操作,即触发touchcancel。一般会在touchcancel时暂停游戏、存档等操作
     *  在Chrome移动模拟器中模拟,发现鼠标触摸span元素没有任何效果  解决方法:addEventListener

    四、addEventListener

    1. 是一个侦听事件并处理相应的函数
    2. 一般有三个参数,第一个是事件的类型,第二个是侦听到事件后处理事件的函数,第三个参数是事件捕获(值就只有两个,true或false)

    五、跟踪触摸的属性

    1. touches:表示当前跟踪的触摸操作的touch对象的数组
      • 当一个手指在触屏上时,event.touches.length=1
      • 当两个手指在触屏上时,event.touches.length=2,以此类推
    2. changedTouches:导致触摸事件被触发的触摸点数组
    3. targetTouches:特定于事件目标的touch对象数组

    六、 触摸事件坐标

    1. clientX         触摸目标在视口中的x坐标
    2. clientY         触摸目标在视口中的y坐标
    3. identifier     标识触摸的唯一ID
    4. pageX         触摸目标在页面中的x坐标
    5. pageY         触摸目标在页面中的y坐标
    6. screenX       触摸目标在屏幕中的x坐标
    7. screenY       触摸目标在屏幕中的y坐标
    8. target          触摸的DOM节点目标
      1 /* 触摸事件坐标的使用方法 */
      2 function handleTouch(e){
      3 //  如果需要,用pageX或pageY代替clientX或clientY
      4   var touch = e.changedTouches[0];
      5   var coorX = touch.clientX;
      6   var coorY = touch.clientY;
      7 }
      8 * clientX/Y和pageX/Y的区别在于前者相对于视觉视口的左上角,后者相对布局视口的左上角。布局视口 是可以滚动的

    七、 移动端事件封装

     1 /* 单击事件 */
     2 element.addEventListener('touchstart', function(e) {
     3             var touches = e.touches[0];
     4             startTx = touches.clientX;
     5             startTy = touches.clientY;
     6         }, false);
     7 * 案例中通过调用tap(封装的单击事件),可以很大程度上简化代码量,方便我们开发
     8 /* 长按事件 */
     9 var touches = e.touches[0];
    10             // 长按 750ms 才去执行 fn函数
    11             lTapTimer = setTimeout(function() {  fn();  }, 750);
    12             e.preventDefault();
    13 * 在touchmove中需要判断水平或者垂直方向的坐标距离,如果大于某个值,我们就不再认为是长按操作了

    八、FastClick库

    1. 定义
      • 一个简单易用的库,用于消除click移动浏览器上物理点击和事件触发之间的300毫秒延迟
    2. 网址
      • https://github.com/ftlabs/fastclick
      • 截至2015年底,大多数移动浏览器(特别是Chrome和Safari)不再具有300ms的触摸延迟,因此fastclick对新型浏览器没有任何好处,并且可能会在应用程序中引入错误。仔细考虑你是否真的需要使用它
    3. 使用方法
      • 引入插件的javascript文件到你的HTML网页中
      • <script type='application/javascript' src='/path/to/fastclick.js'></script>
      • 注意:
        • type属性在HTML5网页中可以省略不写
        • 脚本必须加载到实例化fastclick在页面的任何元素之前
        • 实例化 fastclick 最好在body元素的前面
          1 /*  实例化 */
          2 if ('addEventListener' in document) {
          3     document.addEventListener('DOMContentLoaded', function() {
          4         FastClick.attach(document.body);
          5     }, false);
          6 }
          7 * 引入库和实例化推荐写到body元素的前面

    九、 移动端事件库

    1. touch.js
      • 百度touch.js 是Web移动端touch点击事件不错的解决方案
    2. 网站
    3. 支持移动端事件
    4. hammer.js
      • 一款开源的移动端脚本框架,他能完美的实现在移端开发的大多数事件,如点击、滑动、拖动、多点触控等事件
      • 需要new
  • 相关阅读:
    (转)性能测试---并发用户理解
    (转)基于DDD的现代ASP.NET开发框架--ABP分层架构
    (转)Web自动化测试中的接口测试
    (转) 一致性Hash算法在Memcached中的应用
    Memcached工作原理及常见问题
    Memcached介绍及相关知识
    .net 面试题总结
    使用IDEA工具配置和运行vue项目(详细其中的坑)
    关于伪分布zookeeper集群启动出错(Error contacting service. It is probably not running.)
    常用查找和排序
  • 原文地址:https://www.cnblogs.com/guisenbin/p/10454412.html
Copyright © 2020-2023  润新知