从鼠标到手指-传统拖拽在ipad中

7 篇文章 0 订阅

以前做过一些UI组件,支持一些拖拖拽拽的。最近搞到个ipad,老的组件到了这些手持设备上自然是拖不走,拽不动了。后来想到一个方法,用touch的事件模拟鼠标的操作,也就是用touch的响应事件触发鼠标事件。话不多说,上代码,请大家拍砖

 

Js代码   收藏代码
  1. function isTouchDevice() {  
  2.   return 'ontouchstart' in window;  
  3. }  
  4.   
  5. function fitTouchDevice() {  
  6.   if (!isTouchDevice()) {  
  7.     return;  
  8.   }  
  9.   function simMouseEvt(type, target, pos) {  
  10.     var evt = document.createEvent('MouseEvents');  
  11.     evt.initMouseEvent(type, truetrue, document,   
  12.         0, pos.screenX, pos.screenY, pos.clientX, pos.clientY,   
  13.         falsefalsefalsefalse,   
  14.         0, target);  
  15.     return target.dispatchEvent(evt);  
  16.   }  
  17.     
  18.   document.addEventListener("touchstart"function(e) {  
  19.       if (!simMouseEvt("mousedown", e.target, e.changedTouches[0])) {  
  20.         e.preventDefault();  
  21.         setTimeout(function() {  
  22.           if (!e.target.getAttribute("movement")) {  
  23.             e.target.removeAttribute("movement");  
  24.             simMouseEvt("click", e.target, e.changedTouches[0])  
  25.           }  
  26.         }, 100);  
  27.       }  
  28.     });  
  29.     document.addEventListener("touchmove"function(e) {  
  30.       e.target.setAttribute("movement""move");  
  31.       simMouseEvt("mousemove", e.target, e.changedTouches[0]) || e.preventDefault();  
  32.     });  
  33.     document.addEventListener("touchend"function(e) {  
  34.       e.target.removeAttribute("movement");  
  35.       simMouseEvt("mouseup", e.target, e.changedTouches[0]) || e.preventDefault();  
  36.     });  
  37. }  

 目前只在ipad和android手机上测试过,想法是行得通的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值