用JavaScript写了很多mousedown、mousemove、mouseup的事件方法,在PC端上可以通过鼠标来实现(例如:缩放、拖动),但是在移动端用手指操作没反应,有什么方法可以使在移动端触发touchstart时变成执行PC端的mousedown, 触发touchmove时变成执行PC端的mousemove, 触发touchend时变成执行PC端的mouseup?
或者有这方面的框架吗?
用JavaScript写了很多mousedown、mousemove、mouseup的事件方法,在PC端上可以通过鼠标来实现(例如:缩放、拖动),但是在移动端用手指操作没反应,有什么方法可以使在移动端触发touchstart时变成执行PC端的mousedown, 触发touchmove时变成执行PC端的mousemove, 触发touchend时变成执行PC端的mouseup?
或者有这方面的框架吗?
具体你可以了解一下FastClick实现原理,具体实现原理就是:
if (IsPC()) {
var self = this
var isMouseDown = false
this.element.addEventListener("mousedown", function (evt) {
isMouseDown = true
evt.touches = [{ pageX: evt.pageX, pageY: evt.pageY }]
self.start(evt)
}, false);
this.element.addEventListener("mousemove", function (evt) {
evt.preventDefault()
if (isMouseDown === true) {
evt.touches = [{ pageX: evt.pageX, pageY: evt.pageY }]
self.move(evt)
}
}, false);
this.element.addEventListener("mouseup", function (evt) {
isMouseDown = false
evt.touches = [{ pageX: evt.pageX, pageY: evt.pageY }]
evt.changedTouches = [{ pageX: evt.pageX, pageY: evt.pageY }]
self.end(evt)
}, false);
this.element.addEventListener("mouseout", function (evt) {
evt.touches = [{ pageX: evt.pageX, pageY: evt.pageY }]
self.cancel(evt)
}, false);
} else {
this.element.addEventListener('touchstart', this.start, false)
this.element.addEventListener('touchmove', this.move, false)
this.element.addEventListener('touchend', this.end, false)
this.element.addEventListener('touchcancel', this.cancel, false)
}
四个类型的PC移动端转换(移动端优先),可以封装包装函数转换。难点只是 mousemove 和 touchmove 的区别。
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决