• 转:触屏中的js事件


     一、触摸事件

    ontouchstart
    ontouchmove
    ontouchend
    ontouchcancel 

    目前移动端浏览器均支持这4个触摸事件,包括IE。由于触屏也支持MouseEvent,因此他们的顺序是需要注意的:

    touchstart → mouseover → mousemove → mousedown → mouseup → click1

    ~~触屏也支持mouseEvent?

    /*** onTouchEvent*/
    var div = document.getElementById("div");
    //touchstart类似mousedown
    div.ontouchstart = function(e){
    //事件的touches属性是一个数组,其中一个元素代表同一时刻的一个触控点,从而可以通过touches获取多点触控的每个触控点
    //由于我们只有一点触控,所以直接指向[0]
    var touch = e.touches[0]; //~~~ e.touches触点对象数组
    //获取当前触控点的坐标,等同于MouseEvent事件的clientX/clientY
    var x = touch.clientX; //~~~ 触点相对浏览器窗口的坐标 e.clientX,e.clientY
    var y = touch.clientY;
    };
    //touchmove类似mousemove
    div.ontouchmove = function(e){
    //可为touchstart、touchmove事件加上preventDefault从而阻止触摸时浏览器的缩放、滚动条滚动等
    e.preventDefault(); //~~~ e.preventDefault(); 阻止默认事件
    };
    //touchend类似mouseup
    div.ontouchup = function(e){
    //nothing to do
    };

    三、重力感应

    重力感应较简单,只需要为body节点添加onorientationchange事件即可。//~~ document.onorientationchange

    在此事件中由window.orientation属性得到代表当前手机方向的数值。window.orientation的值列表如下:
    0:与页面首次加载时的方向一致  //~~~ window.orientation 获取手机的朝向  负值代表顺时针 正值代表逆时针
    -90:相对原始方向顺时针转了90°
    180:转了180°
    90:逆时针转了90°

    测试,Android2.1尚未支持重力感应。以上即目前的触屏事件,这些事件尚未并入标准,但已被广泛使用。未在其他环境下测试。

    //以上为转载。下面是偶在做电子阅读的实例

    1)随手指滑动,需要滑动的区域<div id="#roll" ontouchmove="tmove(event)"></div>

    <script type="text/javascript">
    var u = $('#roll');
    function tmove(evet){
    var touch = evet.touches[0]; //~~~ e.touches 和 e.changedTouches 一样吗?
    var x = touch.clientX;
    var y = touch.clientY;
    var left = $("#roll").css("left");

    $("#roll").animate({left:"-264px"},1000);

     evet.preventDefault();
    }

    </script>

    2)手指滑动离开后触发需要滑动的区域<div id="#roll" ontouchend="tend(event)" ontouchstart="tstart(event)"></div>

     var down = 0;
     var up = 0;
     var index=0;
     var w = 64;
     function tstart(event)
     {
      down=event.changedTouches[0].pageX;//获取手指刚触摸时的x坐标  ~~相对页面的坐标
      }
     function tend(event)
     {
      up=event.changedTouches[0].pageX;//获取手指离开时的x坐标
      ul_obj = $("#roll");
      if(down>up)
       {//向左
       $("#roll").animate({left:(index+"px")},1000);
        index = index-64<=-180?-180:index-w;
       }
      else if(down<up)
       {//向右
        $("#roll").animate({left:((index+w)+"px")},1000);
        index = index+64>0?0:index+w;
      }
      }

    3)还有就是电子书别的一些用到滴~帮助记忆~

    3.1 ) 清空文本框:

    $("input").attr("value","");

    3.2 ) setIntervar(function(){ },1000) 设置自动轮播图

    setInterval(function (){      
          if (i > $('.img ul li img').length - 2) 
           {
            i = 0;
           $('.dot a').removeClass('at').eq(i).addClass('at'); 
           }
          else{
          i++;
          $('.dot a').removeClass('at').eq(i).addClass('at');
        }
          $('.img ul').animate({left:-300*i},1000)

    },2000);

    3.3 )setTimeout(function(){},1000) 设置一定时间后触发事件

    setTimeout(function (){      
          $('#feedOk').hide();

          $("#read a").html(“下载成功!”);
          document.location.href="index.html";
          },2000);

    3.4)返回上一页

     <a href="javascript:history.back()" class="back"></a>

     //----------------------------------------------------------------------

    处理Touch事件能让你跟踪用户的每一根手指的位置。你可以绑定以下四种Touch事件:

    1
    2
    3
    4
    touchstart:  // 手指放到屏幕上的时候触发
    touchmove:  // 手指在屏幕上移动的时候触发
    touchend:  // 手指从屏幕上拿起的时候触发
    touchcancel:  // 系统取消touch事件的时候触发。至于系统什么时候会取消,不详

    在开始描述touch事件之前,需要先描述一下多触式系统中特有的touch对象(android和iOS乃至nokia最新 的meego系统都模拟了类似的对象,这里只针对iOS,因为我只有iPad可用于测试。。)。这个对象封装一次 屏幕触摸,一般来自于手指。它在touch事件触发的时候产生,可以通过touch event handler的event对象取到 (一般是通过event.changedTouches属性)。这个对象包括一些重要的属性:

    1
    2
    3
    4
    client / clientY:// 触摸点相对于浏览器窗口viewport的位置
    pageX / pageY:// 触摸点相对于页面的位置
    screenX /screenY:// 触摸点相对于屏幕的位置
    identifier: // touch对象的unique ID

    HTML主体定义

    1
    2
    3
    <body style=”height: 100%;margin:0;padding:0”>
    <div id=”canvas”  style=”position: relative;100%;height: 100%;”></div>
    </body>
  • 相关阅读:
    一、代码风格
    Nginx之Eclipse开发环境配置
    Linux之tail命令实时收集[纠正误解]
    Java之"Mozilla Rhino"引擎(二)
    linux之tail -F命令异常file truncated
    Java之nio性能比较
    Java之nio MappedByteBuffer的资源释放问题
    Java之java.lang.IllegalMonitorStateException
    Java之线程池管理
    Java之NIO传输数据
  • 原文地址:https://www.cnblogs.com/stephenykk/p/3514799.html
Copyright © 2020-2023  润新知