2010-06-02 68 views
10

我的网站广泛使用图像地图。这些图像是来自中世纪手稿的页面。 AREA标签的mouseOver事件附有一个工具提示,该工具提示为鼠标悬停在其上的线条显示古代脚本的现代印刷转录。iPad Safari将鼠标事件映射到图像地图中的触摸事件

我刚刚在苹果商店的iPad上查看了我的网站。 iPad在许多方面都是一种喜悦,然而,我想知道苹果公司将鼠标事件映射到手指触摸事件。苹果公司或许有充足的理由像他们一样做事,但他们的选择似乎违反直觉,对我来说过于复杂。

具体来说,iPad的Safari浏览器显然是响应fingerDown和fingerTap,并以不同的方式。当我点击图像地图的一个区域时,显示了连接到AREA标记的鼠标悬停事件的工具提示,并保持可见,直到我点击其他地方。当我将手指放在图像地图的某个区域上时,该区域改变了颜色。因此,如果iPad Safari检测到mouseOver事件处理程序,它会在click上点击执行mouseOver代码,并且显然会阻止“click”事件传播,因此如果您还有某些事件连接到click事件,则它不起作用?是对的吗?

但更重要的是,为什么不fingerDown iPad的Safari对应mouseOver?当映射mouseOver事件时,FingerDown似乎比Tap更有可能。我本来期望事情以这种方式进行映射:

MouseClick : FingerTap (i.e. finger down and then immediately up) 
MouseOver : FingerDown (finger down and stays on the spot) 

如果苹果曾治疗过fingerDown为对应于鼠标悬停,则提示可能在FingerDown显示和fingerUp再次变得不可见,这将是对手到mouseOut。

也许有人可以启发我关于苹果公司引导这些特定的鼠标触摸事件映射的思考过程吗? 感谢

回答

0

我找到了一些资料,说可以部分解释上述行为:

http://developer.apple.com/safari/library/technotes/tn2010/tn2262/index.html

参见第5节,更是如此。

看起来touch + hold是“选择”图像映射区域。上面的链接指出,用户选择可以被禁用,但它没有说明在用户选择被禁用的元素上使用触摸+保持手势时会发生什么。在这种情况下,如果它可以成为mouseOver的对手,那将是非常棒的。

10

我一直在做一些研究,特别是当iPad触发“鼠标悬停”事件与“点击”事件。当用户点击页面上的任何位置时,iPad会首先触发“鼠标悬停”事件,就好像用户刚刚在该位置放置了鼠标光标。它还在最后一个焦点元素上触发了“鼠标移动”事件。据我所知,浏览器检查是否由于“鼠标悬停”事件回调而发生了DOM的任何更改。

如果DOM发生了变化,浏览器不会触发“点击”事件。如果用户第二次点击同一元素,浏览器会触发“点击”事件,但不会触发另一个“鼠标悬停”事件。另一方面,如果在用户第一次点击元素并且在“mouseover”事件完成之后DOM没有改变,则浏览器触发“点击”事件而不等待第二次点击。