【发布时间】:2010-05-07 13:19:36
【问题描述】:
我现在开始使用触摸事件有一段时间了,但我偶然发现了一个相当大的问题。到目前为止,我检查了是否支持触摸功能,并在此基础上应用选择性事件。像这样:
if(document.ontouchmove === undefined){
//apply mouse events
}else{
//apply touch events
}
但是,我的脚本在我的计算机上的 Chrome5(目前是测试版)中停止工作。我对其进行了一些研究,正如我所料,在 Chrome5 中(相对于旧版 Chrome、Firefox、IE 等)document.ontouchmove 不再是 undefined 而是 null。
起初我想提交一个错误报告,但后来我意识到:有些设备同时具有鼠标和触摸功能,所以这可能很自然,也许 Chrome 现在定义了它,因为我的操作系统可能支持这两种类型的事件。
所以解决方案似乎很简单:应用两种事件类型。对吧?
问题现在发生在移动设备上。为了向后兼容并支持仅使用鼠标事件的脚本,移动浏览器也可能会尝试触发它们(在触摸时)。因此,如果同时设置了鼠标和触摸事件,则可能每次都会调用某个处理程序两次。
解决这个问题的方法是什么?有没有更好的方法来检查和应用选择性事件,或者我必须忽略浏览器有时同时触发触摸和鼠标事件时可能发生的问题?
【问题讨论】:
-
我无法测试,但在触摸事件上返回 false 会取消其默认行为(触发“向后兼容”鼠标事件?)
标签: javascript events browser mouse touch