浏览器模拟touch
var ele = document.getElementById('trackLine') //may have x and y properties in some browsers,But it always has left, top, right, and bottom properties. var rect = ele.getBoundingClientRect(); var touch = new Touch({ "identifier" : 0, "target" : ele, "clientX" : (rect.left + rect.right)/2, "clientY" : (rect.top + rect.bottom)/2, "screenX" : (rect.left + rect.right)/2, "screenY" : (rect.top + rect.bottom)/2, "pageX" : (rect.left + rect.right)/2, "pageY" : (rect.top + rect.bottom)/2, "radiusX" : 11.5, "radiusY" : 11.5, "rotationAngle" : 0.0, "force" : 1}); var touchstart = new TouchEvent("touchstart", { cancelable: true, bubbles: true, composed: true, touches: [touch], targetTouches: [touch], changedTouches: [touch] }); var touchend = new TouchEvent("touchend", { cancelable: true, bubbles: true, composed: true, touches: [touch], targetTouches: [touch], changedTouches: [touch] }); ele.dispatchEvent(touchstart); window.interval = setInterval(function(){ var touch = new Touch({ "identifier" : 0, "target" : ele, "clientX" : (rect.left* Math.random() + rect.right * Math.random())/2, "clientY" : (rect.top* Math.random() + rect.bottom* Math.random())/2, "screenX" : (rect.left* Math.random() + rect.right* Math.random())/2, "screenY" : (rect.top* Math.random() + rect.bottom* Math.random())/2, "pageX" : (rect.left* Math.random() + rect.right* Math.random())/2, "pageY" : (rect.top* Math.random() + rect.bottom* Math.random())/2, "radiusX" : 11.5, "radiusY" : 11.5, "rotationAngle" : 0.0, "force" : 1}); console.log(touch) var touchmove = new TouchEvent("touchmove", { cancelable: true, bubbles: true, composed: true, touches: [touch], targetTouches: [touch], changedTouches: [touch] }); ele.dispatchEvent(touchmove); }, 20);