我在想HTML5拖放API是否支持触摸屏幕显示器。
我想到了iPhone,但我知道它尚未支持。我在想这是不是苹果公司赶上来支持Safari移动版的HTML5拖放,但我也在想可能是HTML5 API的功能不足以支持此功能,但我非常怀疑这点。
那么标准的触摸屏笔记本电脑或类似设备呢?我没有这样的设备,所以无法测试,但我想应该支持,因为据我所知,该表格界面只是替换了鼠标控制,所以从浏览器的角度来看,最终用户实际上只是在使用鼠标。
有什么想法吗?
我在想HTML5拖放API是否支持触摸屏幕显示器。
我想到了iPhone,但我知道它尚未支持。我在想这是不是苹果公司赶上来支持Safari移动版的HTML5拖放,但我也在想可能是HTML5 API的功能不足以支持此功能,但我非常怀疑这点。
那么标准的触摸屏笔记本电脑或类似设备呢?我没有这样的设备,所以无法测试,但我想应该支持,因为据我所知,该表格界面只是替换了鼠标控制,所以从浏览器的角度来看,最终用户实际上只是在使用鼠标。
有什么想法吗?
有一些原生的HTML5事件只在WebKit(Chrome和Safari)的移动版本中有效,这些事件的名称是touchstart、touchmove、touchend和touchcancel。
以下是一个使用触摸重新定位元素的示例:
$(document).bind("touchstart", function(e) {
e.preventDefault();
var orig = e.originalEvent;
var x = orig.changedTouches[0].pageX;
var y = orig.changedTouches[0].pageY;
$("#element").css({top: y, left: x});
});
更多信息:https://developer.apple.com/documentation/webkitjs/touchevent
顺便说一下,我更喜欢使用webkit-transform(CSS 属性),因为它具有更好的性能。
虽然这是一个关于旧话题的帖子,但因为我有一些经验并且这仍然是个问题,我想尝试一下...
触摸和拖放不能很好地协同工作。请考虑对于拖放操作,你有一个隐含的鼠标按下=>鼠标移动=>鼠标放开的事件序列。在触摸环境中,你不仅具有标准的touchstart、touchmove和touchend事件,还可以有实际手势,在各个平台上具有特定的含义。这些手势是由触摸事件、它们的顺序和时间组合而成。
那么如何使用触摸来拖动元素呢?通过捕获touchstart和touchmove吗?不是的。由于手指较粗,几乎每个触摸事件都会同时有touchstart和touchmove。你还会偶尔碰到屏幕不干净时两个touchstart只有一个touchmove的情况。
那么捕获touchstart然后等待看看用户是否移动了一定距离呢?不行。那里的问题是,当用户移动他的手指15像素(或其他距离)时,什么也不发生,然后元素突然跳到他的手指位置,用户会看到这个“故障”。正常的反应是抬起手指,而在这种情况下,这将触发放下操作,这是错误的答案。
最后,试图开发一个接口,其中一些元素是静止的,其他元素可以拖放,但不必须,这是试图将桌面环境适配到触摸设备中。这些范式并不相匹配。
最好查看各种触摸框架并使用内置手势。
遇到了同样的问题,这里有几个免费的解决方案: