2

我构建了一个触摸/鼠标友好的 jQuery 插件。它适用于手机(ios、android...)和桌面浏览器。但我对安装在带触摸屏的笔记本电脑上的 Windows 8 Chrome 有一些问题。不幸的是,我没有这样的设备,无法进行任何测试。IE10 也可以正常工作。

让我解释一下我里面有什么(非常简化的代码):

1.检查是触摸设备:

base.isTouch = ("ontouchstart" in document.documentElement);

2.获取适当的事件

if(base.isTouch === true){
    //use touch events:
    "touchstart.owl",
    "touchmove.owl",
    "touchend.owl"
} else {
    //usemouse events
    "mousedown.owl",
    "mousemove.owl",
    "mouseup.owl"
}

3.检查触摸事件:

if(base.isTouch === true){
    x = event.touches[0].pageX
    y = event.touches[0].pageY
} else {
    x = event.pageX
    y = event.pageY
}

链接到真实代码

我认为 chrome 的问题在于检测我的触摸事件但使用鼠标事件并将它们转换为触摸。

我可以一起添加鼠标和触摸事件:

$('elem').on('mousedown.owl touchstart.owl',func);

没关系,但是我遇到了 event.touches[0].pageX 的问题

链接到插件登陆页面

谢谢!

问题解决了

为了让鼠标和触摸事件在带有触摸屏的 Windows 8 chrome 上协同工作,我必须:

1.在一个元素“touchstart.owl mousedown.owl”上添加两个事件

2.检查“event.touches”:

if(event.touches){
    x = event.touches[0].pageX
    y = event.touches[0].pageY
} else {
    x = event.pageX
    y = event.pageY
}
4

2 回答 2

2

为了让鼠标和触摸事件在带有触摸屏的 Windows 8 chrome 上协同工作,我必须:

1.在一个元素“touchstart.owl mousedown.owl”上添加两个事件

2.检查“event.touches”:

if(event.touches){
    x = event.touches[0].pageX
    y = event.touches[0].pageY
} else {
    x = event.pageX
    y = event.pageY
}
于 2013-09-13T15:42:47.597 回答
0

最简单的解决方案是包含 Touch Punch 插件http://touchpunch.furf.com/

我为我的项目做了它并且效果很好 - 你可以测试它,这是我的项目: http ://englishtotheworld.com/

于 2013-09-12T10:06:09.837 回答