2012-01-22 46 views
2

在阅读touchend事件时,似乎这种行为在不同设备上有些不一致。我只想知道确定是否所有接触已经停止的最好和最简单的方法。我是否正确理解,在这种情况下,我无法依赖event.touches为空或空,因为某些设备会在该列表中包含结束的触摸?我是否正确理解,如果发生这种情况,我不能依靠与触摸长度相同的changedTouches,因为某些设备会从触摸中排除已结束的触摸?跨平台的HTML touchend事件处理

回答

0

现在只有OSX(ipad,iphone)在浏览器上支持ongesturechange事件。所有其他事件都支持所有设备,这里是其中的一些,这就是如何使用它们的方式。来检测触摸结束时,您甚至可以使用touchend,它是在所有设备上的相同,它会火,当所有的手指都没有联系:

$(someel).bind('touchend',callback'); 

来检测触摸的支持只是用这个

var touchy=("ontouchstart" in document.documentElement)?true:false; 

Safari开发者ipad指南有一个很好的文档。

UPDATE:其实我错了,touchend火灾每一个手指抬起时间:这里是给你一个很好的PDF:http://www.albanx.com/programing/ajaxupload/uploaded/SafariJSRef.pdf看第21页。

+0

如果你有两个手指,然后你抬起什么一?在这种情况下会有任何设备着火吗?我不想在这种情况下运行我的代码;我只想在每个手指被移除时运行我的代码。 – BlueMonkMN

+0

不,它不会,当所有手指被移除时,触摸板都会运行。所以你很好。你甚至可以用事件检测手指触摸的数量:fingers = e.touches.length; – albanx

+0

这是记录在任何地方吗?在所有手指被移除之前,touchend不会发射的事实? – BlueMonkMN