OnMouseOver触控的首选替代品

Dan*_*ill 40 javascript touch

在触摸设备上处理OnMouseOver javascript事件是否有首选替代或最佳做法?我只能想到将所有事件转换为OnMouseClick.不幸的是,这会混淆悬停光标触发的事件与单击光标触发的事件之间的差异.

是否有任何替代方案或解决方案对于将与鼠标设备和触摸设备一起使用的网页的用户体验的破坏性较小?

Mic*_*man 36

在触摸设备上处理OnMouseOver javascript事件是否有首选替代或最佳做法?

最简洁的答案是不.

设备特定事件与其他设备的事件没有1:1映射.使用Touch时,没有适当的"悬停"等效项.

鼠标事件(mouseover,mouseout,mousedown,mouseup,mousemove等)特定于鼠标输入设备.键盘有keydown,keypresskeyup.触摸有touchstart,touchmove,touchendtouchcancel.iPhone/iPad /等上的Webkit具有Apple特有的附加手势开始/移动/结束事件.

可以通过这些事件之一触发更高级别的通用事件,例如焦点,模糊,点击,提交等.一个点击事件,例如,可以使用鼠标,触摸或键盘事件触发.(点击,顺便说一句,是一个名称不合适的事件,应该更恰当地称之为动作,但由于其鼠标历史记录仍称为点击).

首选(或"一个Web")方法是将鼠标事件用于特定于鼠标的事物,在这些事物中您无法避免它们,并坚持使用其他所有事件的通用事件.

根据WebKit构建和用于构建它的标志,您可以在某些特殊情况下某些Touch接口上触发一些鼠标事件,但您实际上不希望在其上构建UI,因为这些情况存在的唯一原因是允许mobile-Webkit在市场上获得牵引力.

触摸事件在各个平台上也不一致.如果您正在进行任何移动/触摸操作,请查看ppk的工作,http://quirksmode.org/mobile/tableTouch.html


Nel*_*son 7

onmouseover/onmouseout javascript事件将转换为touchenter/touchleave触摸事件,问题是这些事件刚刚开始在浏览器中实现(它们是W3C草案的一部分),目前只有firefox 支持它,所以如果你正在使用webkit你将不得不等待它,或使用touchmove事件实现你的onmouseover功能,并查看坐标,看看它们是否与你的html元素的坐标重叠.