首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >将触摸事件映射到鼠标事件的JavaScript

将触摸事件映射到鼠标事件的JavaScript
EN

Stack Overflow用户
提问于 2009-10-05 01:43:39
回答 4查看 90.6K关注 0票数 59

我使用的是YUI滑块,它可以操作鼠标移动事件。我想让它对touchmove事件(iPhone和Android)做出响应。当touchmove事件发生时,如何产生鼠标移动事件?我希望只需在顶部添加一些脚本,即可将touchmove事件映射到鼠标移动事件,而无需使用滑块进行任何更改。

EN

回答 4

Stack Overflow用户

发布于 2014-09-26 13:14:19

我最终找到了一种方法,使用Mickey的解决方案,而不是他的init函数。在这里使用init函数。

function init() {
    document.getElementById('filter_div').addEventListener("touchstart", touchHandler, true);
    document.getElementById('filter_div').addEventListener("touchmove", touchHandler, true);
    document.getElementById('filter_div').addEventListener("touchend", touchHandler, true);
    document.getElementById('filter_div').addEventListener("touchcancel", touchHandler, true);
}

如果你看到'filter_div‘是图表区域,在那里我们有图表范围过滤器,并且只有在那个区域我们才想重写我们的触摸控件!

谢谢你米奇。这是一个很好的解决方案。

票数 7
EN

Stack Overflow用户

发布于 2012-12-14 02:12:35

按照@Mickey Shine的回答,Touch Punch提供了触摸事件到点击事件的映射。它是为将此支持放入jQuery UI而构建的,但the code提供了丰富的信息。

票数 4
EN

Stack Overflow用户

发布于 2016-03-21 21:58:24

对于回到这里的未来用户,可能会使用以下代码:

var eventMap = {};

(function(){
var eventReplacement = {
    "mousedown": ["touchstart mousedown", "mousedown"],
    "mouseup": ["touchend mouseup", "mouseup"],
    "click": ["touchstart click", "click"],
    "mousemove": ["touchmove mousemove", "mousemove"]
};


for (i in eventReplacement) {
    if (typeof window["on" + eventReplacement[i][0]] == "object") {
        eventMap[i] = eventReplacement[i][0];
    } 
    else {
        eventMap[i] = eventReplacement[i][1];
    };
 };
})();

然后在事件中使用如下所示:

$(".yourDiv").on(eventMap.mouseup, function(event) {
      //your code
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1517924

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档