HTML5里的手势 *** 作是如何实现的呢?

HTML5里的手势 *** 作是如何实现的呢?,第1张

举例说明:

通过一句addEventListener 就能够知道当前用户的点击是哪种设备,是手指的点击,是鼠标的单击还是触控笔的点击(平板设备都会带有触控笔):

<canvas id="MyCanvas"></canvas>

<script>

MyCanvas.addEventListener("MSPointerDown", MyBack, false)

function MyBack(e) {

alert(e.pointerType.toString())

}

</script>

通过回调的方法中 e.pointerType 还进行判断。

鼠标是4,触控笔是3,手指是2。

至于值为1是何种设备还有待研究。

还有需要注意的就是 想在javascript中添加对输入设备的识别,注册的方法事件也是有点点区别。

addEventListener 添加的事件为 MSPointerDown

而在IE10中对于这样的多种设备识别中优先处理的手指的点击,前提是不影响功能正常单击的情况下,然而IE10不仅仅能识别用户的输入设备还支持非常多的高级手势。

解答:原文给出的各个方法是在对象中的,复制过来需要复制到对象中。

如下方法是针对全屏滑动的,如果需要针对某个元素监听的话将:

var html = document.documentElement || document.body

TouchInit(html)

改为

var oEl = document.querySelector("元素选择器")

TouchInit(oEl)

即可

---------------------- 完整代码分割线 --------------------------

修改内容如下(建议格式化下网页链接):

var html = document.documentElement || document.body

        TouchInit(html)

        function TouchInit(el){

          var minOffset = 30//最小偏移量,低于这个值不响应滑动处理

          var minTime = 60// 最小时间,单位:毫秒,低于这个值不响应滑动处理

          var startX = 0//开始时的X坐标

          var startY = 0//开始时的Y坐标

          var startTime = 0//开始时的毫秒数

          var obj = {

            touchStart: function(e){

              startX = e.touches[0].pageX// 获取触摸时的x坐标

              startY = e.touches[0].pageY// 获取触摸时的x坐标

              startTime = new Date().getTime()//获取毫秒数

            },

            touchCancel: function (e) {

              startX = 0//开始时的X坐标

              startY = 0//开始时的Y坐标

              startTime = 0//开始时的毫秒数

            },

            touchEnd: function (e) {

              var endX = e.changedTouches[0].pageX

              var endY = e.changedTouches[0].pageY

              var touchTime = new Date().getTime() - startTime//计算滑动时间

              //开始判断

              //1.判断时间是否符合

              if (touchTime >= minTime) {

                //2.判断偏移量:分X、Y

                var xOffset = endX - startX

                var yOffset = endY - startY

                console.log('xOffset', xOffset)

                console.log('yOffset', yOffset)

                //①条件1(偏移量x或者y要大于最小偏移量)

                //②条件2(可以判断出是左右滑动还是上下滑动)

                if (Math.abs(xOffset) >= Math.abs(yOffset) &&Math.abs(xOffset) >= minOffset) {

                  //左右滑动

                  //③条件3(判断偏移量的正负)

                  if (xOffset <0) {

              //向左滑动

window.open("www.baidu.com")

                    console.log('向左滑动')

                  } else {

                    console.log('向右滑动')

                  }

                } else if (Math.abs(xOffset) <Math.abs(yOffset) &&Math.abs(yOffset) >= minOffset) {

                  //上下滑动

                  //③条件3(判断偏移量的正负)

                  if (yOffset <0) {

                    console.log('向上滑动')

                  } else {

                    console.log('向下滑动')

                  }

                }

              } else {

                console.log('滑动时间过短', touchTime)

              }

            },

          }

          el.addEventListener("touchstart", obj.touchStart, false)

          el.addEventListener("touchend", obj.touchEnd, false)

          el.addEventListener("touchcancel", obj.touchCancel, false)

        }


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/8154152.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-13
下一篇 2023-04-13

发表评论

登录后才能评论

评论列表(0条)

保存